more smart_pointer + static methods fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6915 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
4eeb33782e
commit
ba413fd500
3 changed files with 45 additions and 4 deletions
|
|
@ -69,3 +69,29 @@
|
||||||
};
|
};
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%extend CFoo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void StatFun() {};
|
||||||
|
static void StatFun(int i) {};
|
||||||
|
|
||||||
|
static void HoHoHo(int i, int j) {};
|
||||||
|
}
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
|
||||||
|
class CFoo
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
class CPtrFoo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CFoo* operator->(void) {return 0;};
|
||||||
|
};
|
||||||
|
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1101,6 +1101,10 @@ Language::staticmemberfunctionHandler(Node *n) {
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
mrename = mangled;
|
mrename = mangled;
|
||||||
|
|
||||||
|
if (Getattr(n,"sym:overloaded") && code) {
|
||||||
|
Append(cname, Getattr(defaultargs ? defaultargs : n,"sym:overname"));
|
||||||
|
}
|
||||||
|
|
||||||
if (!defaultargs && code) {
|
if (!defaultargs && code) {
|
||||||
/* Hmmm. An added static member. We have to create a little wrapper for this */
|
/* Hmmm. An added static member. We have to create a little wrapper for this */
|
||||||
Swig_add_extension_code(n, cname, parms, type, code, CPlusPlus);
|
Swig_add_extension_code(n, cname, parms, type, code, CPlusPlus);
|
||||||
|
|
|
||||||
|
|
@ -791,16 +791,27 @@ Swig_MethodToFunction(Node *n, String *classname, int flags) {
|
||||||
if (flags & CWRAP_SMART_POINTER) {
|
if (flags & CWRAP_SMART_POINTER) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
Parm *pp = p;
|
Parm *pp = p;
|
||||||
String *func = NewStringf("%s((%s*)(%s)->operator ->()", mangled, cname,
|
String *func = NewStringf("%s(", mangled);
|
||||||
Swig_cparm_name(pp,i++));
|
if (Cmp(Getattr(n,"storage"),"static") != 0) {
|
||||||
while ((pp = nextSibling(pp))) {
|
String *fadd = NewStringf("(%s*)(%s)->operator ->()", cname, Swig_cparm_name(pp,i));
|
||||||
|
Append(func,fadd);
|
||||||
|
Delete(fadd);
|
||||||
|
pp = nextSibling(pp);
|
||||||
|
if (pp) Append(func,",");
|
||||||
|
} else{
|
||||||
|
pp = nextSibling(pp);
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
while (pp) {
|
||||||
SwigType *pt = Getattr(pp,"type");
|
SwigType *pt = Getattr(pp,"type");
|
||||||
if ((SwigType_type(pt) != T_VOID)) {
|
if ((SwigType_type(pt) != T_VOID)) {
|
||||||
String *pname = Swig_cparm_name(pp,i++);
|
String *pname = Swig_cparm_name(pp,i++);
|
||||||
String *rcaststr = SwigType_rcaststr(pt, pname);
|
String *rcaststr = SwigType_rcaststr(pt, pname);
|
||||||
Printf(func,",%s", rcaststr);
|
Printf(func,"%s", rcaststr);
|
||||||
Delete(rcaststr);
|
Delete(rcaststr);
|
||||||
Delete(pname);
|
Delete(pname);
|
||||||
|
pp = nextSibling(pp);
|
||||||
|
if (pp) Append(func,",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Printf(func,")");
|
Printf(func,")");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue