| /* Test whether varios enums in C. */ |
| |
| %module "enums" |
| |
| /* Suppress warning messages from the Ruby module for all of the following.. */ |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) boo; |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) hoo; |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance1; |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance2; |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance3; |
| %warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK); |
| |
| %inline %{ |
| |
| #if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| /* for anonymous enums */ |
| /* dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] */ |
| #pragma GCC diagnostic ignored "-Wstrict-aliasing" |
| #endif |
| |
| typedef enum { |
| CSP_ITERATION_FWD, |
| CSP_ITERATION_BWD = 11 |
| } foo1; |
| |
| typedef enum foo2 { |
| ABCDE = 0, |
| FGHJI = 1 |
| } foo3; |
| |
| void |
| bar1(foo1 x) {} |
| |
| void |
| bar2(enum foo2 x) {} |
| |
| void |
| bar3(foo3 x) {} |
| |
| enum sad { boo, hoo = 5 }; |
| |
| #ifdef __cplusplus /* For Octave and g++ which compiles C test code as C++ */ |
| extern "C" { |
| #endif |
| /* Unnamed enum instance */ |
| enum { globalinstance1, globalinstance2, globalinstance3 = 30 } GlobalInstance; |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /* Anonymous enum */ |
| enum { AnonEnum1, AnonEnum2 = 100 }; |
| |
| %} |
| |
| %inline %{ |
| |
| typedef struct _Foo { |
| enum { BAR1, BAR2 } e; |
| } Foo; |
| |
| %} |
| |
| |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) _iFoo; |
| |
| #ifdef SWIGD |
| /* Work around missing support for proper char quoting due to parser shortcomings. */ |
| %dconstvalue("'a'") _iFoo::Char; |
| #endif |
| |
| #ifndef __cplusplus |
| %inline %{ |
| typedef struct _iFoo |
| { |
| enum { |
| Phoo = +50, |
| Char = 'a' |
| } e; |
| } iFoo; |
| %} |
| #else |
| %inline %{ |
| struct iFoo |
| { |
| enum { |
| Phoo = +50, |
| Char = 'a' |
| }; |
| }; |
| %} |
| #endif |
| |
| // enum declaration and initialization |
| %inline %{ |
| enum Exclamation { |
| goodness, |
| gracious, |
| me |
| } enumInstance = me; |
| |
| enum ContainYourself { |
| slap = 10, |
| mine, |
| thigh |
| } Slap = slap, Mine = mine, Thigh = thigh, *pThigh = &Thigh, arrayContainYourself[3] = {slap, mine, thigh}; |
| %} |
| |