| |
| // This testcase uses the %javaconst directive to control how enums are initialised |
| |
| %module java_enums |
| |
| %include "enumtypeunsafe.swg" |
| |
| // Some pragmas to add in an interface to the module class |
| %pragma(java) moduleinterfaces="Serializable" |
| %pragma(java) moduleimports=%{ |
| import java.io.*; // For Serializable |
| %} |
| %pragma(java) modulecode=%{ |
| public static final long serialVersionUID = 0x52151001; // Suppress ecj warning |
| %} |
| |
| |
| // Set default Java const code generation |
| %javaconst(1); |
| |
| // Test enums with trailing comma after the last item. |
| enum WithTrailingComma |
| { |
| First, |
| Second, |
| }; |
| |
| %ignore ReallyFirstOneIsIgnored; |
| enum WithTrailingCommaAndIgnoredFirstItem |
| { |
| ReallyFirstOneIsIgnored, |
| FirstNonIgnoredOne, |
| SecondNonIgnoredOne, |
| }; |
| |
| // Change the default generation so that these enums are generated into an interface instead of a class |
| %typemap(javaclassmodifiers) enum stuff "public interface" |
| |
| %inline %{ |
| enum stuff { FIDDLE = 2*100, STICKS = 5+8, BONGO, DRUMS }; |
| %} |
| |
| // Check that the enum typemaps are working by using a short for the enums instead of int |
| %javaconst(0); // will create compile errors in runme file if short typemaps not used |
| |
| namespace Space { |
| %typemap(jtype) enum nonsense "short" |
| %typemap(jstype) enum nonsense "short" |
| %typemap(javain) enum nonsense "$javainput" |
| %typemap(in) enum nonsense %{ $1 = (enum Space::nonsense)$input; %} |
| %typemap(out) enum nonsense %{ $result = (jshort)$1; %} |
| %typemap(jni) enum nonsense "jshort" |
| %typemap(javaout) enum nonsense { |
| return $jnicall; |
| } |
| } |
| |
| %inline %{ |
| namespace Space { |
| enum nonsense { POPPYCOCK, JUNK }; |
| nonsense test1(nonsense n) { return n; } |
| enum nonsense test2(enum nonsense n) { return n; } |
| } |
| %} |
| |
| // Test the %javaconstvalue directive for enums |
| %{ |
| static const int FOUR = 4; |
| %} |
| |
| %javaconst(1); |
| %javaconstvalue(4) Quattro; |
| %inline %{ |
| enum Numero { Quattro = FOUR }; |
| %} |
| |
| // Test boolean enums |
| %inline %{ |
| typedef enum { PLAY = true, STOP = false } play_state; |
| %} |
| |