diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
|---|---|---|
| committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
| commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
| tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/modula3/enum/example.h | |
| download | swig-tarball-9f8a09ed743cedd9547bf0661d518647966ab114.tar.gz | |
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/modula3/enum/example.h')
| -rw-r--r-- | Examples/modula3/enum/example.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Examples/modula3/enum/example.h b/Examples/modula3/enum/example.h new file mode 100644 index 0000000..2f44a6c --- /dev/null +++ b/Examples/modula3/enum/example.h @@ -0,0 +1,83 @@ +/* File : example.h */ + +#define PI 3.141 + +#define DAY_MONDAY 0 +#define DAY_TUESDAY 1 +#define DAY_WEDNESDAY 2 +#define DAY_THURSDAY 3 +#define DAY_FRIDAY 4 +#define DAY_SATURDAY 5 +#define DAY_SUNDAY 6 + +enum color { BLUE, RED, GREEN }; + +#define CLB_BLACK 0 +#define CLB_BLUE 1 +#define CLB_RED 2 +#define CLB_MAGENTA 3 +#define CLB_GREEN 4 +#define CLB_CYAN 5 +#define CLB_YELLOW 6 +#define CLB_WHITE 7 + +/* Using this would be good style + which cannot be expected for general C header files. + Instead I want to demonstrate how to live without it. +enum month { + MTHF_JANUARY, + MTHF_FEBRUARY, + MTHF_MARCH, + MTHF_APRIL, + MTHF_MAY, + MTHF_JUNE, + MTHF_JULY, + MTHF_AUGUST, + MTHF_SEPTEMBER, + MTHF_OCTOBER, + MTHF_NOVEMBER, + MTHF_DECEMBER, +} +*/ + +/* Since there are no compile time constants in C / C++ + it is a common abuse + to declare bit set (flag) constants + as enumerations. */ +enum calendar { + MTHB_JANUARY = 1 << 0, /* 1 << MTHF_JANUARY, */ + MTHB_FEBRUARY = 1 << 1, /* 1 << MTHF_FEBRUARY, */ + MTHB_MARCH = 1 << 2, /* 1 << MTHF_MARCH, */ + MTHB_APRIL = 1 << 3, /* 1 << MTHF_APRIL, */ + MTHB_MAY = 1 << 4, /* 1 << MTHF_MAY, */ + MTHB_JUNE = 1 << 5, /* 1 << MTHF_JUNE, */ + MTHB_JULY = 1 << 6, /* 1 << MTHF_JULY, */ + MTHB_AUGUST = 1 << 7, /* 1 << MTHF_AUGUST, */ + MTHB_SEPTEMBER = 1 << 8, /* 1 << MTHF_SEPTEMBER, */ + MTHB_OCTOBER = 1 << 9, /* 1 << MTHF_OCTOBER, */ + MTHB_NOVEMBER = 1 << 10, /* 1 << MTHF_NOVEMBER, */ + MTHB_DECEMBER = 1 << 11, /* 1 << MTHF_DECEMBER, */ + + MTHB_SPRING = MTHB_MARCH | MTHB_APRIL | MTHB_MAY, + MTHB_SUMMER = MTHB_JUNE | MTHB_JULY | MTHB_AUGUST, + MTHB_AUTUMN = MTHB_SEPTEMBER | MTHB_OCTOBER | MTHB_NOVEMBER, + MTHB_WINTER = MTHB_DECEMBER | MTHB_JANUARY | MTHB_FEBRUARY, +}; + + +namespace Answer { + enum { + UNIVERSE_AND_EVERYTHING = 42, + SEVENTEEN_AND_FOUR = 21, + TWOHUNDRED_PERCENT_OF_NOTHING = 0, + }; + + class Foo { + public: + Foo() { } + enum speed { IMPULSE = -2, WARP = 0, HYPER, LUDICROUS = 3}; + void enum_test(speed s); + }; +}; + +void enum_test(color c, Answer::Foo::speed s); |
