diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2016-03-01 08:15:33 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2016-03-02 07:10:58 +0000 |
commit | 3000824c94a8a7300056a6fb6a3b8a2664a8643e (patch) | |
tree | 520e0062c0859b45e0e465030895f205eefe7950 /Lib/java | |
parent | 14d234151265608772087f9634db18dba919e889 (diff) | |
download | swig-3000824c94a8a7300056a6fb6a3b8a2664a8643e.tar.gz |
Interface macros: %interface %interface_impl %interface_custom
Diffstat (limited to 'Lib/java')
-rw-r--r-- | Lib/java/feature_interface.i | 23 |
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 |