From: Marcelo M. <mar...@us...> - 2004-12-01 00:47:48
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20653 Modified Files: lang.cxx Log Message: fix protected constructor by using clean_overloaded to utils.cxx, and fix smart_pointer + members Index: lang.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/lang.cxx,v retrieving revision 1.93 retrieving revision 1.94 diff -C2 -d -r1.93 -r1.94 *** lang.cxx 30 Nov 2004 20:18:33 -0000 1.93 --- lang.cxx 1 Dec 2004 00:47:32 -0000 1.94 *************** *** 654,657 **** --- 654,658 ---- Parm *pattern = Getattr(items,"pattern"); Parm *parms = Getattr(items,"parms"); + if (code) { Swig_typemap_register(method,pattern,code,parms,kwargs); *************** *** 1142,1160 **** } else { String *storage = Getattr(n,"storage"); if ((Cmp(storage,"static") == 0)) { ! if (!SmartPointer) { ! staticmembervariableHandler(n); ! } } else { - Swig_save("variableHandler",n,"feature:immutable",NIL); /* If a smart-pointer and it's a constant access, we have to set immutable */ - if (SmartPointer) { - if (Getattr(CurrentClass,"allocate:smartpointerconst")) { - Setattr(n,"feature:immutable","1"); - } - } membervariableHandler(n); - Swig_restore(n); } } return SWIG_OK; --- 1143,1159 ---- } else { String *storage = Getattr(n,"storage"); + Swig_save("variableHandler",n,"feature:immutable",NIL); + if (SmartPointer) { + if (Getattr(CurrentClass,"allocate:smartpointerconst")) { + Setattr(n,"feature:immutable","1"); + } + } if ((Cmp(storage,"static") == 0)) { ! staticmembervariableHandler(n); } else { /* If a smart-pointer and it's a constant access, we have to set immutable */ membervariableHandler(n); } + Swig_restore(n); } return SWIG_OK; *************** *** 1216,1220 **** String *target = 0; if (!Extend) { ! target = NewStringf("%s->%s", Swig_cparm_name(0,0),name); tm = Swig_typemap_lookup_new("memberin",n,target,0); } --- 1215,1223 ---- String *target = 0; if (!Extend) { ! if (SmartPointer) { ! target = NewStringf("(*%s)->%s", Swig_cparm_name(0,0),name); ! } else { ! target = NewStringf("%s->%s", Swig_cparm_name(0,0),name); ! } tm = Swig_typemap_lookup_new("memberin",n,target,0); } *************** *** 1315,1318 **** --- 1318,1322 ---- SwigType *type = SwigType_typedef_resolve_all(Getattr(n,"type")); + String *classname = !SmartPointer ? ClassName : Getattr(CurrentClass,"allocate:smartpointerbase"); if (!value || !(SwigType_isconst(type))) { String *name = Getattr(n,"name"); *************** *** 1322,1326 **** /* Create the variable name */ mrename = Swig_name_member(ClassPrefix, symname); ! cname = NewStringf("%s::%s", ClassName,name); Setattr(n,"sym:name",mrename); --- 1326,1330 ---- /* Create the variable name */ mrename = Swig_name_member(ClassPrefix, symname); ! cname = NewStringf("%s::%s", classname,name); Setattr(n,"sym:name",mrename); *************** *** 1347,1351 **** String *name = Getattr(n,"name"); ! String *cname = NewStringf("%s::%s", ClassName,name); String* value = SwigType_namestr(cname); Setattr(n, "value", value); --- 1351,1355 ---- String *name = Getattr(n,"name"); ! String *cname = NewStringf("%s::%s", classname,name); String* value = SwigType_namestr(cname); Setattr(n, "value", value); *************** *** 2111,2114 **** --- 2115,2136 ---- if (ImportMode) return SWIG_NOWRAP; + /* clean protected overloaded constructors, in case they are not + needed anymore */ + Node *over = Swig_symbol_isoverloaded(n); + if (over && !Getattr(CurrentClass,"sym:cleanconstructor")) { + int dirclass = Swig_directorclass(CurrentClass); + Node *nn = over; + while (nn) { + if (!is_public(nn)) { + if (!dirclass || !need_nonpublic_ctor(nn)) { + Setattr(nn,"feature:ignore","1"); + } + } + nn = Getattr(nn,"sym:nextSibling"); + } + clean_overloaded(over); + Setattr(CurrentClass,"sym:cleanconstructor","1"); + } + if ((cplus_mode != CPLUS_PUBLIC)) { /* check only for director classes */ |