42#include "EST_TNamedEnum.h"
43#include "EST_String.h"
48# define InfoType const char *
51typedef enum { c_red=1, c_blue=2, c_green=3, c_unknown=666} Colour;
53Start_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"}
58End_TNamedEnumI(Colour, InfoType, ColourMap)
60typedef void (*PrintFn)(void);
62void print_q(
void) { cout <<
"???\n"; }
63void print_1(
void) { cout <<
"111\n"; }
64void print_2(
void) { cout <<
"222\n"; }
65void print_3(
void) { cout <<
"333\n"; }
68Start_TValuedEnum(Colour, PrintFn, FnColourMap)
69 { c_unknown, {print_q}},
70 { c_red, {print_1, print_3}},
73End_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"
130Instantiate_TNamedEnumI(Colour, InfoType)
132Instantiate_TValuedEnum(Colour, PrintFn)