mirror of https://github.com/swig/swig
83 lines
2.2 KiB
OpenEdge ABL
83 lines
2.2 KiB
OpenEdge ABL
%module preproc_constants
|
|
|
|
// Note: C types are slightly different to C++ types as (a && b) is int in C and bool in C++
|
|
|
|
// Simple constants
|
|
#define CONST_INT1 10
|
|
#define CONST_INT2 0xFF
|
|
|
|
#define CONST_UINT1 10u
|
|
#define CONST_UINT2 10U
|
|
#define CONST_UINT3 0xFFu
|
|
#define CONST_UINT4 0xFFU
|
|
|
|
#define CONST_LONG1 10l
|
|
#define CONST_LONG2 10L
|
|
#define CONST_LONG3 0xFFl
|
|
#define CONST_LONG4 0xFFL
|
|
|
|
#define CONST_LLONG1 10LL
|
|
#define CONST_LLONG2 10ll
|
|
#define CONST_LLONG3 0xFFll
|
|
#define CONST_LLONG4 0xFFLL
|
|
|
|
#define CONST_ULLONG1 10ull
|
|
#define CONST_ULLONG2 10ULL
|
|
#define CONST_ULLONG3 0xFFull
|
|
#define CONST_ULLONG4 0xFFULL
|
|
|
|
#define CONST_DOUBLE1 10e1
|
|
#define CONST_DOUBLE2 10E1
|
|
#define CONST_DOUBLE3 12.3
|
|
#define CONST_DOUBLE4 12.
|
|
#define CONST_DOUBLE5 12.3f
|
|
#define CONST_DOUBLE6 12.3F
|
|
|
|
#define CONST_BOOL1 true
|
|
#define CONST_BOOL2 false
|
|
|
|
#define CONST_CHAR 'x'
|
|
#define CONST_STRING1 "const string"
|
|
#define CONST_STRING2 "const" " string"
|
|
|
|
// Expressions - runtime tests check the type for any necessary type promotions of the expressions
|
|
|
|
#define INT_AND_BOOL 0xFF & true
|
|
//#define INT_AND_CHAR 0xFF & 'A' /* FIXME compile error */
|
|
#define INT_AND_INT 0xFF & 2
|
|
#define INT_AND_UINT 0xFF & 2u
|
|
#define INT_AND_LONG 0xFF & 2l
|
|
#define INT_AND_ULONG 0xFF & 2ul
|
|
#define INT_AND_LLONG 0xFF & 2ll
|
|
#define INT_AND_ULLONG 0xFF & 2ull
|
|
|
|
#define BOOL_AND_BOOL true & true // Note integral promotion to type int
|
|
//#define CHAR_AND_CHAR 'A' & 'B' // Note integral promotion to type int
|
|
/* FIXME ABOVE */
|
|
|
|
|
|
#define EXPR_MULTIPLY 0xFF * 2
|
|
#define EXPR_DIVIDE 0xFF / 2
|
|
//FIXME #define EXPR_MOD 0xFF % 2
|
|
|
|
#define EXPR_PLUS 0xFF + 2
|
|
#define EXPR_MINUS 0xFF + 2
|
|
|
|
#define EXPR_LSHIFT 0xFF << 2
|
|
#define EXPR_RSHIFT 0xFF >> 2
|
|
/* FIXME
|
|
#define EXPR_LT 0xFF < 255
|
|
#define EXPR_GT 0xFF > 255
|
|
#define EXPR_LTE 0xFF <= 255
|
|
#define EXPR_LGE 0xFF >= 255
|
|
*/
|
|
#define EXPR_INEQUALITY 0xFF != 255
|
|
#define EXPR_EQUALITY 0xFF == 255
|
|
#define EXPR_AND 0xFF & 1
|
|
#define EXPR_XOR 0xFF ^ 1
|
|
#define EXPR_OR 0xFF | 1
|
|
#define EXPR_LAND 0xFF && 1
|
|
#define EXPR_LOR 0xFF || 1
|
|
#define EXPR_CONDITIONAL true ? 2 : 2.2
|
|
|