fix missing static member access methods, discovered with li_std_string test
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8650 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
c21dd4543b
commit
f8407dd07b
2 changed files with 51 additions and 9 deletions
|
|
@ -1472,7 +1472,7 @@ Language::staticmembervariableHandler(Node *n)
|
||||||
Setattr(n, "type", t2);
|
Setattr(n, "type", t2);
|
||||||
Delete(t1);
|
Delete(t1);
|
||||||
Delete(t2);
|
Delete(t2);
|
||||||
|
SetFlag(n,"wrappedasconstant");
|
||||||
memberconstantHandler(n);
|
memberconstantHandler(n);
|
||||||
Delete(cname);
|
Delete(cname);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3056,21 +3056,63 @@ public:
|
||||||
* ------------------------------------------------------------ */
|
* ------------------------------------------------------------ */
|
||||||
|
|
||||||
virtual int staticmembervariableHandler(Node *n) {
|
virtual int staticmembervariableHandler(Node *n) {
|
||||||
String *symname;
|
|
||||||
SwigType *t;
|
|
||||||
|
|
||||||
Language::staticmembervariableHandler(n);
|
Language::staticmembervariableHandler(n);
|
||||||
if (shadow) {
|
|
||||||
t = Getattr(n,"type");
|
if (shadow && !GetFlag(n,"wrappedasconstant")) {
|
||||||
symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
if (SwigType_isconst(t) && !Getattr(n, "value")) {
|
if (GetFlag(n,"hasconsttype")) {
|
||||||
String *mname = Swig_name_member(class_name,symname);
|
String *mname = Swig_name_member(class_name,symname);
|
||||||
Printf(f_shadow_stubs,"%s.%s = %s.%s.%s\n", class_name, symname, module, global_name, mname);
|
Printf(f_shadow_stubs,"%s.%s = %s.%s.%s\n", class_name, symname, module, global_name, mname);
|
||||||
Delete(mname);
|
Delete(mname);
|
||||||
|
} else {
|
||||||
|
String *mname = Swig_name_member(class_name,symname);
|
||||||
|
String *gname = Swig_name_get(mname);
|
||||||
|
String *wgname = Swig_name_wrapper(gname);
|
||||||
|
String *sname = Swig_name_set(mname);
|
||||||
|
String *wsname = Swig_name_wrapper(sname);
|
||||||
|
|
||||||
|
Wrapper *f = NewWrapper();
|
||||||
|
Printv(f->def, "SWIGINTERN PyObject *", wgname, "(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(args)) {", NIL);
|
||||||
|
Printv(f->code," return ", gname,"();\n", NIL);
|
||||||
|
Append(f->code,"}\n");
|
||||||
|
add_method(gname, wgname, 0);
|
||||||
|
Wrapper_print(f,f_wrappers);
|
||||||
|
Delete(f);
|
||||||
|
int assignable = is_assignable(n);
|
||||||
|
if (assignable) {
|
||||||
|
Wrapper *f = NewWrapper();
|
||||||
|
Printv(f->def, "SWIGINTERN PyObject *", wsname, "(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {", NIL);
|
||||||
|
Wrapper_add_local(f,"value","PyObject *value");
|
||||||
|
Wrapper_add_local(f,"res","int res");
|
||||||
|
Append(f->code,"if (!PyArg_ParseTuple(args,(char *)\"O:set\",&value)) return NULL;\n");
|
||||||
|
Printv(f->code,"res = ", sname,"(value);\n", NIL);
|
||||||
|
Append(f->code,"return !res ? SWIG_Py_Void() : NULL;\n");
|
||||||
|
Append(f->code,"}\n");
|
||||||
|
Wrapper_print(f,f_wrappers);
|
||||||
|
add_method(sname, wsname, 0);
|
||||||
|
Delete(f);
|
||||||
|
}
|
||||||
|
if (!modern) {
|
||||||
|
if (assignable) {
|
||||||
|
Printv(f_shadow, tab4, "__swig_setmethods__[\"", symname, "\"] = ", module, ".", sname, "\n", NIL);
|
||||||
|
}
|
||||||
|
Printv(f_shadow, tab4, "__swig_getmethods__[\"", symname, "\"] = ", module, ".", gname,"\n", NIL);
|
||||||
|
}
|
||||||
|
if (!classic) {
|
||||||
|
if (!assignable) {
|
||||||
|
Printv(f_shadow, tab4, modern ? "" : "if _newclass:", symname," = property(", module, ".", gname,")\n", NIL);
|
||||||
|
} else {
|
||||||
|
Printv(f_shadow, tab4, modern ? "" : "if _newclass:", symname," = property(", module, ".", gname,", ", module, ".", sname,")\n", NIL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Delete(mname);
|
||||||
|
Delete(gname);
|
||||||
|
Delete(wgname);
|
||||||
|
Delete(sname);
|
||||||
|
Delete(wsname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue