diff options
author | Vladimir Kalinin <vkalinin@opendesign.com> | 2013-05-31 22:37:13 +0400 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2016-02-12 07:09:17 +0000 |
commit | 5768d87deb96e90134e27032f026d276f1d42226 (patch) | |
tree | 1686a944c918ea0cdbf754e69494fc3be89cf1ee | |
parent | ccd46ec560ce7ba85c797b1d248ce36fb23231ce (diff) | |
download | swig-5768d87deb96e90134e27032f026d276f1d42226.tar.gz |
director generation fixes
Conflicts:
Lib/java/feature_interface.i
Source/Modules/csharp.cxx
Source/Modules/java.cxx
-rw-r--r-- | Lib/java/feature_interface.i | 4 | ||||
-rw-r--r-- | Source/Modules/csharp.cxx | 3 | ||||
-rw-r--r-- | Source/Modules/java.cxx | 9 |
3 files changed, 13 insertions, 3 deletions
diff --git a/Lib/java/feature_interface.i b/Lib/java/feature_interface.i index e6dd9ba27..a6b46effa 100644 --- a/Lib/java/feature_interface.i +++ b/Lib/java/feature_interface.i @@ -17,6 +17,10 @@ %typemap(javadirectorin) CTYPE, CTYPE & "(INTERFACE)new IMPL($jniinput, false)" %typemap(javadirectorin) CTYPE *, CTYPE *const&, CTYPE [] "($jniinput == 0) ? null : (INTERFACE)new IMPL($jniinput, false)" %typemap(javadirectorout) CTYPE, CTYPE *, CTYPE *const&, CTYPE [], CTYPE & "$javacall." ## #INTERFACE ## "_SWIGInterfaceUpcast()" +%typemap(directorin, descriptor="L$packagepath/" ## #INTERFACE ## ";") CTYPE *, CTYPE &, CTYPE *const&, CTYPE [], CTYPE & +%{ $input = 0; + *(($&1_ltype*)&$input) = &$1; +%} SWIG_JAVABODY_PROXY(public, protected, CTYPE) %enddef diff --git a/Source/Modules/csharp.cxx b/Source/Modules/csharp.cxx index 963a8dcfb..fab7aa4b3 100644 --- a/Source/Modules/csharp.cxx +++ b/Source/Modules/csharp.cxx @@ -2070,7 +2070,6 @@ public: destructor_call = NewString(""); proxy_class_constants_code = NewString(""); - Swig_propagate_interface_methods(n); if (Getattr(n, "feature:interface")) { interface_class_code = NewStringEmpty(); String *iname = Getattr(n, "feature:interface:name"); @@ -4271,6 +4270,8 @@ public: String *old_director_delegate_instances = director_delegate_instances; String *old_director_method_types = director_method_types; String *old_director_connect_parms = director_connect_parms; + if (proxy_flag) + Swig_propagate_interface_methods(n); int ret = Language::classDeclaration(n); diff --git a/Source/Modules/java.cxx b/Source/Modules/java.cxx index 4696cf968..437e9437b 100644 --- a/Source/Modules/java.cxx +++ b/Source/Modules/java.cxx @@ -2037,7 +2037,13 @@ public: Printf(f_interface, " long %s_SWIGInterfaceUpcast();\n", iname); } - /* ---------------------------------------------------------------------- + int classDeclaration(Node *n) { + if (proxy_flag) + Swig_propagate_interface_methods(n); + return Language::classDeclaration(n); + } + + /* ---------------------------------------------------------------------- * classHandler() * ---------------------------------------------------------------------- */ @@ -2141,7 +2147,6 @@ public: destructor_throws_clause = NewString(""); proxy_class_constants_code = NewString(""); - Swig_propagate_interface_methods(n); if (Getattr(n, "feature:interface")) { interface_class_code = NewStringEmpty(); String *iname = Getattr(n, "feature:interface:name"); |