fix old template + many many typedefs error detected in Udo tremel's template_typedef_rec.i example, and deactive TEMPLATE_QUALIFY cache for problems with OSS

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7993 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-12-16 17:18:00 +00:00
commit 6910efd151
3 changed files with 118 additions and 6 deletions

View file

@ -1392,13 +1392,11 @@ Swig_symbol_isoverloaded(Node *n) {
* ----------------------------------------------------------------------------- */
static int no_constructor(Node *n) {
#ifdef SWIG_DEBUG
Printf(stderr,"node type %s\n", HashGetAttr(n,k_name), type);
#endif
return !HashCheckAttr(n, k_nodetype, k_constructor);
}
#define SWIG_TEMPLATE_QUALIFY_CACHE
/* This cache produce problems with OSS, don't active it */
/* #define SWIG_TEMPLATE_QUALIFY_CACHE */
static SwigType *
Swig_symbol_template_qualify(const SwigType *e, Symtab *st) {
String *tprefix, *tsuffix;
@ -1597,14 +1595,14 @@ SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab) {
n = Swig_symbol_clookup(base,tab);
if (!n) {
Delete(base);
if (SwigType_istemplate(ty)) {
SwigType *qt = Swig_symbol_template_reduce(ty,tab);
SwigType *qt = Swig_symbol_template_reduce(base,tab);
StringAppend(prefix,qt);
Delete(qt);
#ifdef SWIG_DEBUG
Printf(stderr,"symbol_reduce %s %s\n", ty, prefix);
#endif
Delete(base);
return prefix;
} else {
Delete(prefix);