director generation fixes

Conflicts:
	Lib/java/feature_interface.i
	Source/Modules/csharp.cxx
	Source/Modules/java.cxx
This commit is contained in:
Vladimir Kalinin 2013-05-31 22:37:13 +04:00 committed by William S Fulton
commit 5768d87deb
3 changed files with 13 additions and 3 deletions

View file

@ -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

View file

@ -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);

View file

@ -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");