38#ifndef __EST_FEATURES_H__
39#define __EST_FEATURES_H__
44#include "EST_TIterator.h"
54EST_Val est_val(
const EST_Item_featfunc f);
66 void save_fpair(ostream &outf,
70 static EST_Val feature_default_value;
72 EST_Features(
const EST_Features &
f);
217 { features->add_item(name,sval); }
236 { EST_Features *ff =
new EST_Features(
f);
247 { features->remove_item(name,1); }
250 int length()
const {
return features->length(); }
262 {
f.save(s);
return s; }
268 EST_Litem *head()
const {
return features->
list.head(); }
269 EST_String &fname(EST_Litem *p)
const {
return features->list(p).k; }
270 EST_Val &
val(EST_Litem *p)
const {
return features->list(p).v; }
271 float F(EST_Litem *p)
const {
return features->list(p).v.
Float(); }
272 EST_String
S(EST_Litem *p)
const {
return features->list(p).v.string(); }
273 int I(EST_Litem *p)
const {
return features->list(p).v.Int(); }
274 EST_Features &
A(EST_Litem *p) {
return *feats(features->list(p).v); }
280 struct IPointer { EST_TKVL<EST_String, EST_Val>::RwEntries i; };
282 void point_to_first(
IPointer &ip)
const
283 { ip.i.begin(*features);}
284 void move_pointer_forwards(
IPointer &ip)
const
286 bool points_to_something(
const IPointer &ip)
const
287 {
return ip.i != 0; }
288 EST_TKVI<EST_String, EST_Val> &points_at(
const IPointer &ip)
291 friend class EST_TIterator< EST_Features,
IPointer, EST_TKVI<EST_String, EST_Val> >;
292 friend class EST_TStructIterator< EST_Features,
IPointer, EST_TKVI<EST_String, EST_Val> >;
293 friend class EST_TRwIterator< EST_Features,
IPointer, EST_TKVI<EST_String, EST_Val> >;
294 friend class EST_TRwStructIterator< EST_Features,
IPointer, EST_TKVI<EST_String, EST_Val> >;
302 typedef EST_TKVI<EST_String, EST_Val> Entry;
303 typedef EST_TStructIterator< EST_Features, IPointer, Entry> Entries;
304 typedef EST_TRwStructIterator< EST_Features, IPointer, Entry> RwEntries;
312 EST_read_status
load(EST_TokenStream &ts);
314 EST_read_status
load_sexpr(EST_TokenStream &ts);
316 EST_write_status
save(ostream &outf)
const;
318 EST_write_status
save_sexpr(ostream &outf)
const;
324{(void)a; (void)b;
return false;}
void set(const EST_String &name, const char *cval)
EST_Features & A(const EST_String &path) const
void set(const EST_String &name, int ival)
EST_Features & operator=(const EST_Features &a)
const EST_Val & val(const char *name) const
const EST_Val & operator()(const EST_String &path) const
void set_path(const EST_String &name, const EST_Val &sval)
void remove(const EST_String &name)
friend ostream & operator<<(ostream &s, const EST_Features &f)
const EST_String S(const EST_String &path, const EST_String &def) const
void set_function(const EST_String &name, const EST_String &f)
const EST_Val & f(const EST_String &path, const EST_Val &def) const
void set_val(const EST_String &name, const EST_Val &sval)
EST_read_status load(EST_TokenStream &ts)
load features from already opened EST_TokenStream
EST_read_status load_sexpr(EST_TokenStream &ts)
load features from sexpression, contained in already opened EST_TokenStream
void set(const EST_String &name, EST_Features &f)
EST_write_status save(ostream &outf) const
save features in already opened ostream
const float F(const EST_String &path) const
const EST_String S(const EST_String &path) const
const int I(const EST_String &path, int def) const
const EST_Val & f(const EST_String &path) const
int present(const EST_String &name) const
EST_write_status save_sexpr(ostream &outf) const
save features as s-expression in already opened ostream
const int I(const EST_String &path) const
void set(const EST_String &name, float fval)
void set(const EST_String &name, const EST_String &sval)
const EST_Val & val_path(const EST_String &path) const
const float F(const EST_String &path, float def) const
void set(const EST_String &name, double dval)
EST_TList< EST_TKVI< K, V > > list
Linked list of key-val pairs. Don't use this as it will be made private in the future.
const EST_String & string(void) const
const int Int(void) const
const float Float(void) const