summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Kalinin <vkalinin@opendesign.com>2013-05-31 22:37:13 +0400
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2016-02-12 07:09:17 +0000
commit5768d87deb96e90134e27032f026d276f1d42226 (patch)
tree1686a944c918ea0cdbf754e69494fc3be89cf1ee
parentccd46ec560ce7ba85c797b1d248ce36fb23231ce (diff)
downloadswig-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.i4
-rw-r--r--Source/Modules/csharp.cxx3
-rw-r--r--Source/Modules/java.cxx9
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");