45 #include "EST_String.h"
46 #include "EST_simplestats.h"
48 static void Discrete_val_delete_funct(
void *d) {
delete (
int *)d; }
50 EST_Discrete::~EST_Discrete()
52 nametrie.
clear(Discrete_val_delete_funct);
59 cerr <<
"WARNING from EST_Discrete ctor : invalid vocab list !";
60 nametrie.
clear(Discrete_val_delete_funct);
68 p_def_val = d.p_def_val;
69 nametrie.
clear(Discrete_val_delete_funct);
70 namevector = d.namevector;
72 for (i=0; i<namevector.
length(); ++i)
76 nametrie.
add(namevector(i),t);
88 nametrie.
clear(Discrete_val_delete_funct);
90 for (i=0,w=vocab.head(); w != 0; i++,w=w->next()){
91 namevector[i] = vocab(w);
96 if(nametrie.
lookup(vocab(w)) != NULL)
98 cerr <<
"EST_Discrete : found repeated item '";
99 cerr << vocab(w) <<
"' in vocab list !" << endl;
103 nametrie.
add(vocab(w),tmp);
113 return (
bool)(namevector == d.namevector);
118 return (
bool)(namevector != d.namevector);
121 EST_String EST_Discrete::print_to_string(
int quote)
125 static EST_Regex needquotes(
".*[()'\";., \t\n\r].*");
131 s += sep + quote_string(
name(i),
"\"",
"\\",1);
144 s << d.
name(i) <<
" ";
148 Discretes::~Discretes()
152 for (i=0; i<next_free; i++)
162 if ((next_free == max) && (max > 0))
165 for (i=0; i<next_free; i++)
166 new_discretes[i] = discretes[i];
169 discretes = new_discretes;
173 pos = next_free + 10;
bool init(const EST_StrList &vocab)
(re-)initialise
const EST_String & name(const int n) const
The name given the index.
const int length(void) const
The number of members in the discrete.
void add(const EST_String &key, void *item)
Add {\tt item} indexed by {\tt key}, overwriting previous contents.
void * lookup(const EST_String &key) const
Find contents index by {\tt key}, 0 if there is not contents.
void clear(void)
Delete the tree.
int matches(const char *e, int pos=0) const
Exactly match this string?
void resize(int n, int set=1)
INLINE int length() const
number of items in vector.