Changes in / [11f8ff7:d6c5faa]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/jiada_liang_MMath/user_define_enum.cfa
r11f8ff7 rd6c5faa 3 3 #include <string.hfa> 4 4 5 forall( E, V | TypedEnum( E, V ) | { string str( V ); } ) // routine to format value}$ 5 6 forall( E, V | TypedEnum( E, V ) | { string str( V ); } ) // routine to format value}$ 6 7 string format_enum( E e ) { 7 8 return label( e ) + '(' + str( value( e ) ) + ')'; // "label( value )" 8 9 } 9 10 enum(size_t) RGB { Red = 0xFF0000, Green = 0x00FF00, Blue = 0x0000FF }; 10 11 // string library has conversion from size_t to string 11 12 13 12 14 struct color_code { int R, G, B; }; 13 15 enum(color_code) Rainbow { 14 16 Red = {255, 0, 0}, Orange = {255, 127, 0}, Yellow = {255, 255, 0}, Green = {0, 255, 0}, // ... 15 17 }; 16 18 string str( color_code cc ) with( cc ) { 17 19 return str( R ) + ',' + str( G ) + ',' + str( B ); // "R,G,B" 18 20 } 19 21 20 enum Fruit { Apple, Banana, Cherry }; // C enum 22 23 enum Fruit { Apple, Banana, Cherry }; // C enum 21 24 const char * label( Fruit f ) { 22 static const char * labels[] = { "Apple","Banana", "Cherry" };23 return labels[f];25 static const char * label[] = { "Apple, ""Banana", "Cherry" }; 26 return label[f]; 24 27 } 28 29 25 30 int posn( Fruit f ) { return f; } 26 31 int value( Fruit f ) { 27 static const char values[] = { 'a', 'b', 'c'};28 return values[f];32 static const int position[] = { 0, 1, 2 }; 33 return position[f]; 29 34 } 35 36 30 37 string str( int f ) { 31 string s = (char)f; 32 return s; 38 return f; 33 39 } 40 41 34 42 int main() { 35 sout | format_enum( RGB.Green );// "Green(65280)"}$36 sout | format_enum( Rainbow.Green );// "Green(0,255,0)"}$37 sout | format_enum( Cherry );// "Cherry(c)"43 sout | format_enum( RGB.Green ); // "Green(65280)"}$ 44 sout | format_enum( Rainbow.Green ); // "Green(0,255,0)"}$ 45 sout | format_enum( Cherry ); // "Cherry(c)" 38 46 }
Note: See TracChangeset
for help on using the changeset viewer.