/trunk/Examples/test-suite/java_enums.i
Swig | 66 lines | 51 code | 15 blank | 0 comment | 0 complexity | a2df7e471027586b852432dacf213583 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- // 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);
- // 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;
- %}