fix for template + operators and compilers like gcc 3.3.5
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8233 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
69c14f087e
commit
41f3d67055
1 changed files with 8 additions and 7 deletions
|
|
@ -393,7 +393,14 @@ Swig_cmethod_call(String_or_char *name, ParmList *parms, String_or_char *self) {
|
||||||
if (!self) self = (char *) "(this)->";
|
if (!self) self = (char *) "(this)->";
|
||||||
Append(func,self);
|
Append(func,self);
|
||||||
|
|
||||||
nname = SwigType_namestr(name);
|
if (SwigType_istemplate(name) && (strncmp(Char(name),"operator ",9) == 0)) {
|
||||||
|
/* fix for template + operators and compilers like gcc 3.3.5 */
|
||||||
|
String *tprefix = SwigType_templateprefix(name);
|
||||||
|
nname = tprefix;
|
||||||
|
} else {
|
||||||
|
nname = SwigType_namestr(name);
|
||||||
|
}
|
||||||
|
|
||||||
pt = Getattr(p,k_type);
|
pt = Getattr(p,k_type);
|
||||||
|
|
||||||
/* If the method is invoked through a dereferenced pointer, we don't add any casts
|
/* If the method is invoked through a dereferenced pointer, we don't add any casts
|
||||||
|
|
@ -418,12 +425,6 @@ Swig_cmethod_call(String_or_char *name, ParmList *parms, String_or_char *self) {
|
||||||
the rest seems not caring very much,
|
the rest seems not caring very much,
|
||||||
*/
|
*/
|
||||||
if (SwigType_istemplate(name)) {
|
if (SwigType_istemplate(name)) {
|
||||||
/* fix for compilers like gcc 3.3.5 + operator() */
|
|
||||||
if (strstr(Char(nname),"operator ()") != 0) {
|
|
||||||
String *tprefix = SwigType_templateprefix(nname);
|
|
||||||
Delete(nname);
|
|
||||||
nname = tprefix;
|
|
||||||
}
|
|
||||||
Printf(func,"SWIGTEMPLATEDISAMBIGUATOR %s(", nname);
|
Printf(func,"SWIGTEMPLATEDISAMBIGUATOR %s(", nname);
|
||||||
} else {
|
} else {
|
||||||
Printf(func,"%s(", nname);
|
Printf(func,"%s(", nname);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue