summaryrefslogtreecommitdiff
path: root/Examples/modula3/enum/example.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/modula3/enum/example.h
downloadswig-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.h83
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);