Use SWIG-specific for non-overloaded synthesized functions too
This avoids conflicts between such functions, which are generated when using %extend to add static methods to an existing class, and the actual wrapper functions generated by the backend. This shouldn't result in any user-visible changes.
This commit is contained in:
parent
119222be77
commit
26bf86322b
2 changed files with 15 additions and 3 deletions
|
|
@ -1321,8 +1321,11 @@ int Language::staticmemberfunctionHandler(Node *n) {
|
||||||
mrename = mangled;
|
mrename = mangled;
|
||||||
|
|
||||||
if (code) {
|
if (code) {
|
||||||
|
// See Swig_MethodToFunction() for the explanation of this code.
|
||||||
if (Getattr(n, "sym:overloaded")) {
|
if (Getattr(n, "sym:overloaded")) {
|
||||||
Append(cname, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
Append(cname, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
||||||
|
} else {
|
||||||
|
Append(cname, "__SWIG");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defaultargs) {
|
if (!defaultargs) {
|
||||||
|
|
|
||||||
|
|
@ -1076,9 +1076,18 @@ int Swig_MethodToFunction(Node *n, const_String_or_char_ptr nspace, String *clas
|
||||||
|
|
||||||
/* Check if the method is overloaded. If so, and it has code attached, we append an extra suffix
|
/* Check if the method is overloaded. If so, and it has code attached, we append an extra suffix
|
||||||
to avoid a name-clash in the generated wrappers. This allows overloaded methods to be defined
|
to avoid a name-clash in the generated wrappers. This allows overloaded methods to be defined
|
||||||
in C. */
|
in C.
|
||||||
if (Getattr(n, "sym:overloaded") && code) {
|
|
||||||
Append(mangled, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
But when not using the suffix used for overloaded functions, we still need to ensure that the
|
||||||
|
wrapper name doesn't conflict with any wrapper functions, so make it sufficiently unique by
|
||||||
|
appending a suffix similar to the one used for overloaded functions to it.
|
||||||
|
*/
|
||||||
|
if (code) {
|
||||||
|
if (Getattr(n, "sym:overloaded")) {
|
||||||
|
Append(mangled, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
||||||
|
} else {
|
||||||
|
Append(mangled, "__SWIG");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if there is any code that we need to emit */
|
/* See if there is any code that we need to emit */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue