From: <wsf...@us...> - 2007-07-03 22:39:37
|
Revision: 9862 http://swig.svn.sourceforge.net/swig/?rev=9862&view=rev Author: wsfulton Date: 2007-07-03 15:39:35 -0700 (Tue, 03 Jul 2007) Log Message: ----------- Fix directors for some overloaded methods where the imtype resulted in identical methods being generated in the C# director class Modified Paths: -------------- trunk/CHANGES.current trunk/Examples/test-suite/director_overload.i trunk/Source/Modules/csharp.cxx Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2007-07-02 21:38:54 UTC (rev 9861) +++ trunk/CHANGES.current 2007-07-03 22:39:35 UTC (rev 9862) @@ -1,6 +1,13 @@ Version 1.3.32 (in progress) ============================ +07/03/2007: wsfulton + [C#] Fix directors for some overloaded methods where the imtype resulted in identical + methods being generated in the C# director class, eg void foo(int *) and void foo(double *) + used to generated two of these: + + private void SwigDirectorfoo(IntPtr p) { ... } + 06/25/2007: wsfulton [Java, C#] Some parameter name changes in std_vector.i allowing better targeting of typemaps for method parameters (for memory management of containers of pointers). Modified: trunk/Examples/test-suite/director_overload.i =================================================================== --- trunk/Examples/test-suite/director_overload.i 2007-07-02 21:38:54 UTC (rev 9861) +++ trunk/Examples/test-suite/director_overload.i 2007-07-03 22:39:35 UTC (rev 9862) @@ -30,5 +30,18 @@ virtual void method2(bool b) const {} }; +class OverloadedPointers +{ +public: + virtual ~OverloadedPointers() {} + virtual void method(int *p) const {} + virtual void method(double *p) const {} + virtual void method(bool &r) const {} + virtual void method(short &r) const {} + virtual void method(OverloadedClass *p) const {} + virtual void method(OverloadedPointers *p) const {} + virtual void notover(int *p) const {} +}; + %} Modified: trunk/Source/Modules/csharp.cxx =================================================================== --- trunk/Source/Modules/csharp.cxx 2007-07-02 21:38:54 UTC (rev 9861) +++ trunk/Source/Modules/csharp.cxx 2007-07-03 22:39:35 UTC (rev 9862) @@ -1569,8 +1569,9 @@ UpcallData *udata = Getitem(dmethods_seq, i); String *method = Getattr(udata, "method"); String *methid = Getattr(udata, "class_methodidx"); + String *overname = Getattr(udata, "overname"); Printf(proxy_class_code, " if (SwigDerivedClassHasMethod(\"%s\", swigMethodTypes%s))\n", method, methid); - Printf(proxy_class_code, " swigDelegate%s = new SwigDelegate%s_%s(SwigDirector%s);\n", methid, proxy_class_name, methid, method); + Printf(proxy_class_code, " swigDelegate%s = new SwigDelegate%s_%s(SwigDirector%s);\n", methid, proxy_class_name, methid, overname); } Printf(proxy_class_code, " %s.%s_director_connect(swigCPtr", imclass_name, proxy_class_name); for (int i = first_class_dmethod; i < curr_class_dmethod; ++i) { @@ -3203,7 +3204,7 @@ String *imtypeout = Getattr(tp, "tmap:imtype:out"); // the type in the imtype typemap's out attribute overrides the type in the typemap if (imtypeout) tm = imtypeout; - Printf(callback_def, " private %s SwigDirector%s(", tm, symname); + Printf(callback_def, " private %s SwigDirector%s(", tm, overloaded_name); if (!ignored_method) Printf(director_delegate_definitions, " public delegate %s", tm); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |