42 #include "EST_TNamedEnum.h"
43 #include "EST_String.h"
48 # define InfoType const char *
51 typedef enum { c_red=1, c_blue=2, c_green=3, c_unknown=666} Colour;
53 Start_TNamedEnumI(Colour, InfoType, ColourMap)
54 { c_unknown, {
"grey"},
"Xenon"},
55 { c_red, {
"red",
"scarlet"},
"Mercury"},
56 { c_blue, {
"blue",
"navy",
"sad"},
"Steel"},
57 { c_unknown, {
"UNKNOWN COLOUR"},
"x"}
58 End_TNamedEnumI(Colour, InfoType, ColourMap)
60 typedef
void (*PrintFn)(
void);
62 void print_q(
void) { cout <<
"???\n"; }
63 void print_1(
void) { cout <<
"111\n"; }
64 void print_2(
void) { cout <<
"222\n"; }
65 void print_3(
void) { cout <<
"333\n"; }
68 Start_TValuedEnum(Colour, PrintFn, FnColourMap)
69 { c_unknown, {print_q}},
70 { c_red, {print_1, print_3}},
73 End_TValuedEnum(Colour, PrintFn, FnColourMap)
82 n = ColourMap.name(c1);
83 cout <<
"c1 is " << (n?n:
"[NULL]") <<
" " << (n?
EST_String(ColourMap.info(c1)):
EST_String(
"[NULL]")) <<
"\n";
85 n = ColourMap.name(c2);
86 cout <<
"c2 is " << (n?n:
"[NULL]") <<
"\n";
88 n = ColourMap.name(c3);
89 cout <<
"c3 is " << (n?n:
"[NULL]") <<
" " << (n?
EST_String(ColourMap.info(c3)):
EST_String(
"[NULL]")) <<
"\n";
94 if ((fn = FnColourMap.value(FnColourMap.token(print_3))))
100 if ((fn = FnColourMap.value(FnColourMap.token(print_2))))
106 if ((fn = FnColourMap.value(c1)))
112 if ((fn = FnColourMap.value(c2)))
117 cout <<
"c_unknown ";
118 if ((fn = FnColourMap.value(c_unknown)))
127 #if defined(INSTANTIATE_TEMPLATES)
128 #include "../base_class/EST_TNamedEnum.cc"
130 Instantiate_TNamedEnumI(Colour, InfoType)
132 Instantiate_TValuedEnum(Colour, PrintFn)