From b940c7ae9497537022b7e9afc2523709acbcd8c3 Mon Sep 17 00:00:00 2001 From: Dave Beazley Date: Tue, 10 Dec 2002 16:15:22 +0000 Subject: [PATCH] Fixed template argument replacement bug. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@4169 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Source/CParse/templ.c | 6 +++++- SWIG/Source/Swig/stype.c | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/SWIG/Source/CParse/templ.c b/SWIG/Source/CParse/templ.c index b9b7fb4cd..859ff9b10 100644 --- a/SWIG/Source/CParse/templ.c +++ b/SWIG/Source/CParse/templ.c @@ -243,6 +243,7 @@ Swig_cparse_template_expand(Node *n, String *rname, ParmList *tparms) { name = Getattr(tp,"name"); value = Getattr(p,"value"); tydef = Getattr(p,"typedef"); + if (name) { if (!value) { value = Getattr(p,"type"); @@ -270,8 +271,11 @@ Swig_cparse_template_expand(Node *n, String *rname, ParmList *tparms) { sz = Len(typelist); for (i = 0; i < sz; i++) { String *s = Getitem(typelist,i); - Replace(s,name,value, DOH_REPLACE_ID); + /* Replace(s,name,value, DOH_REPLACE_ID); */ + /* Printf(stdout,"name = '%s', s = '%s' --> ", name, s); */ + SwigType_typename_replace(s,name,value); SwigType_typename_replace(s,tbase,iname); + /* Printf(stdout,"'%s'\n", s); */ } if (!tydef) { diff --git a/SWIG/Source/Swig/stype.c b/SWIG/Source/Swig/stype.c index 40bac71c8..bb9b27ddf 100644 --- a/SWIG/Source/Swig/stype.c +++ b/SWIG/Source/Swig/stype.c @@ -1567,6 +1567,16 @@ SwigType_typename_replace(SwigType *t, String *pat, String *rep) { Append(e,nt); Delete(nt); } + } else if (Swig_scopename_check(e)) { + String *first, *rest; + first = Swig_scopename_first(e); + rest = Swig_scopename_suffix(e); + SwigType_typename_replace(rest,pat,rep); + SwigType_typename_replace(first,pat,rep); + Clear(e); + Printf(e,"%s::%s", first,rest); + Delete(first); + Delete(rest); } } else if (SwigType_isfunction(e)) { int j;