From: <wsf...@us...> - 2006-12-05 22:12:29
|
Revision: 9608 http://swig.svn.sourceforge.net/swig/?rev=9608&view=rev Author: wsfulton Date: 2006-12-05 14:12:25 -0800 (Tue, 05 Dec 2006) Log Message: ----------- %extend for static member varibles work in progress ... more consistent code across different language modules and memory leak fixes Modified Paths: -------------- trunk/Source/Modules/chicken.cxx trunk/Source/Modules/perl5.cxx trunk/Source/Modules/ruby.cxx Modified: trunk/Source/Modules/chicken.cxx =================================================================== --- trunk/Source/Modules/chicken.cxx 2006-12-05 22:11:40 UTC (rev 9607) +++ trunk/Source/Modules/chicken.cxx 2006-12-05 22:12:25 UTC (rev 9608) @@ -1162,6 +1162,8 @@ } Delete(proc); + Delete(setfunc); + Delete(getfunc); return SWIG_OK; } Modified: trunk/Source/Modules/perl5.cxx =================================================================== --- trunk/Source/Modules/perl5.cxx 2006-12-05 22:11:40 UTC (rev 9607) +++ trunk/Source/Modules/perl5.cxx 2006-12-05 22:12:25 UTC (rev 9608) @@ -765,9 +765,11 @@ SwigType *t = Getattr(n, "type"); Wrapper *getf, *setf; String *tm; + String *getname = Swig_name_get(iname); + String *setname = Swig_name_set(iname); - String *set_name = Swig_name_wrapper(Swig_name_set(iname)); - String *val_name = Swig_name_wrapper(Swig_name_get(iname)); + String *get_name = Swig_name_wrapper(getname); + String *set_name = Swig_name_wrapper(setname); if (!addSymbol(iname, n)) return SWIG_ERROR; @@ -801,7 +803,7 @@ /* Now write a function to evaluate the variable */ int addfail = 0; - Printf(getf->def, "SWIGCLASS_STATIC int %s(pTHX_ SV *sv, MAGIC *SWIGUNUSEDPARM(mg)) {\n", val_name); + Printf(getf->def, "SWIGCLASS_STATIC int %s(pTHX_ SV *sv, MAGIC *SWIGUNUSEDPARM(mg)) {\n", get_name); Printv(getf->code, tab4, "MAGIC_PPERL\n", NIL); if ((tm = Swig_typemap_lookup_new("varout", n, name, 0))) { @@ -850,10 +852,10 @@ } /* Now add symbol to the PERL interpreter */ if (GetFlag(n, "feature:immutable")) { - Printv(variable_tab, tab4, "{ \"", cmodule, "::", iname, "\", MAGIC_CLASS swig_magic_readonly, MAGIC_CLASS ", val_name, ",", tt, " },\n", NIL); + Printv(variable_tab, tab4, "{ \"", cmodule, "::", iname, "\", MAGIC_CLASS swig_magic_readonly, MAGIC_CLASS ", get_name, ",", tt, " },\n", NIL); } else { - Printv(variable_tab, tab4, "{ \"", cmodule, "::", iname, "\", MAGIC_CLASS ", set_name, ", MAGIC_CLASS ", val_name, ",", tt, " },\n", NIL); + Printv(variable_tab, tab4, "{ \"", cmodule, "::", iname, "\", MAGIC_CLASS ", set_name, ", MAGIC_CLASS ", get_name, ",", tt, " },\n", NIL); } /* If we're blessed, try to figure out what to do with the variable @@ -876,8 +878,10 @@ DelWrapper(setf); DelWrapper(getf); + Delete(getname); + Delete(setname); Delete(set_name); - Delete(val_name); + Delete(get_name); return SWIG_OK; } Modified: trunk/Source/Modules/ruby.cxx =================================================================== --- trunk/Source/Modules/ruby.cxx 2006-12-05 22:11:40 UTC (rev 9607) +++ trunk/Source/Modules/ruby.cxx 2006-12-05 22:12:25 UTC (rev 9608) @@ -1416,7 +1416,8 @@ /* create getter */ int addfail = 0; - getfname = Swig_name_get(iname); + String *getname = Swig_name_get(iname); + getfname = Swig_name_wrapper(getname); Printv(getf->def, "SWIGINTERN VALUE\n", getfname, "(", NIL); Printf(getf->def, "VALUE self"); Printf(getf->def, ") {"); @@ -1445,7 +1446,8 @@ setfname = NewString("NULL"); } else { /* create setter */ - setfname = Swig_name_set(iname); + String *setname = Swig_name_set(iname); + setfname = Swig_name_wrapper(setname); Printv(setf->def, "SWIGINTERN VALUE\n", setfname, "(VALUE self, ", NIL); Printf(setf->def, "VALUE _val) {"); tm = Swig_typemap_lookup_new("varin", n, name, 0); @@ -1463,6 +1465,7 @@ Printv(setf->code, tab4, "return Qnil;\n", NIL); Printf(setf->code, "}\n"); Wrapper_print(setf, f_wrappers); + Delete(setname); } /* define accessor method */ @@ -1502,6 +1505,7 @@ Delete(s); break; } + Delete(getname); Delete(getfname); Delete(setfname); DelWrapper(setf); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |