mirror of https://github.com/swig/swig
109 lines
1.9 KiB
OpenEdge ABL
109 lines
1.9 KiB
OpenEdge ABL
/* 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};
|
|
%}
|
|
|