51 #ifndef __EST_TNAMEDENUM_H__ 
   52 #define __EST_TNAMEDENUM_H__ 
   58 #include "EST_String.h" 
   59 #include "EST_rw_status.h" 
   61 #define NAMED_ENUM_MAX_SYNONYMS (10) 
   69 template<
class ENUM, 
class VAL, 
class INFO> 
 
   73     VAL values[NAMED_ENUM_MAX_SYNONYMS];
 
   88   virtual int eq_vals(VAL v1, VAL v2)
 const {
return v1 == v2; };
 
   91   void initialise(
const void *defs);
 
   92   void initialise(
const void *defs, ENUM (*conv)(
const char *));
 
   93   void initialise(
void) {ndefinitions=0; definitions=NULL;};
 
   94   void initialise(ENUM unknown_e, VAL unknown_v) {initialise(); p_unknown_enum=unknown_e; p_unknown_value = unknown_v;};
 
  101     {initialise((
const void *)defs); };
 
  103     {initialise((
const void *)defs, conv); };
 
  108   ENUM token(VAL value) 
const;
 
  109   ENUM token(
int n)
 const { 
return nth_token(n); }
 
  110   ENUM nth_token(
int n) 
const;
 
  111   VAL value(ENUM token, 
int n=0) 
const;
 
  112   INFO &info(ENUM token) 
const;
 
  114   ENUM unknown_enum(
void)
 const {
return p_unknown_enum;};
 
  115   VAL  unknown_value(
void)
 const {
return p_unknown_value;};
 
  116   int  valid(ENUM token)
 const { 
return !eq_vals(value(token),p_unknown_value); };
 
  126   int eq_vals(
const char *v1, 
const char *v2)
 const {
return strcmp(v1,v2) ==0; };
 
  130     {this->initialise((
const void *)defs); };
 
  132     {this->initialise((
const void *)defs, conv); };
 
  133   const char *name(ENUM tok, 
int n=0)
 const {
return this->value(tok,n); };
 
  142     {this->initialise((
const void *)defs);};
 
  144     {this->initialise((
const void *)defs, conv);};
 
  154     {this->initialise(undef_e, undef_n);};
 
  156     {this->initialise((
const void *)defs);};
 
  158     {this->initialise((
const void *)defs, conv);};
 
  160   EST_read_status load(
EST_String name) { 
return priv_load(name, NULL); };
 
  162   EST_write_status save(
EST_String name, 
char quote=
'"')
 const { 
return priv_save(name, NULL, quote); };
 
  163   EST_write_status save(
EST_String name, 
EST_TNamedEnum &definitive, 
char quote=
'"')
 const { 
return priv_save(name, &definitive, quote); };
 
  167 #include "instantiate/EST_TNamedEnumI.h"