summaryrefslogtreecommitdiff
path: root/Lib/java
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2016-03-01 08:15:33 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2016-03-02 07:10:58 +0000
commit3000824c94a8a7300056a6fb6a3b8a2664a8643e (patch)
tree520e0062c0859b45e0e465030895f205eefe7950 /Lib/java
parent14d234151265608772087f9634db18dba919e889 (diff)
downloadswig-3000824c94a8a7300056a6fb6a3b8a2664a8643e.tar.gz
Interface macros: %interface %interface_impl %interface_custom
Diffstat (limited to 'Lib/java')
-rw-r--r--Lib/java/feature_interface.i23
1 files changed, 14 insertions, 9 deletions
diff --git a/Lib/java/feature_interface.i b/Lib/java/feature_interface.i
index 3e4fabdc6..2e025998e 100644
--- a/Lib/java/feature_interface.i
+++ b/Lib/java/feature_interface.i
@@ -1,7 +1,4 @@
-%define DECLARE_INTERFACE_(INTERFACE, CTYPE...)
-%feature("interface", name="INTERFACE") CTYPE;
-//%feature("interface", name="%(rstrip:[Impl])s") CTYPE;
-//%feature("interface", name="%(regex:/(.*)Impl$/\\1/)s") CTYPE;
+%define INTERFACE_TYPEMAPS(CTYPE...)
%typemap(jtype) CTYPE, CTYPE *, CTYPE *const&, CTYPE [], CTYPE & "long"
%typemap(jstype) CTYPE "$&javainterfacename"
%typemap(jstype) CTYPE *, CTYPE [], CTYPE & "$javainterfacename"
@@ -49,12 +46,20 @@
%}
%enddef
-%define DECLARE_INTERFACE_RENAME(INTERFACE, IMPL, CTYPE...)
-%rename (IMPL) CTYPE;
-DECLARE_INTERFACE_(INTERFACE, CTYPE)
+%define %interface(CTYPE...)
+%feature("interface", name="I%s") CTYPE;
+INTERFACE_TYPEMAPS(CTYPE)
%enddef
-%define DECLARE_INTERFACE(INTERFACE, CTYPE...)
-DECLARE_INTERFACE_(INTERFACE, CTYPE)
+%define %interface_impl(CTYPE...)
+%rename("%sSwigImpl") CTYPE;
+%feature("interface", name="%(regex:/(.*)SwigImpl$/\\1/)s") CTYPE;
+INTERFACE_TYPEMAPS(CTYPE)
+%enddef
+
+%define %interface_custom(IMPL, INTERFACE, CTYPE...)
+%rename(IMPL) CTYPE;
+%feature("interface", name=INTERFACE) CTYPE;
+INTERFACE_TYPEMAPS(CTYPE)
%enddef