35 #ifndef __EST_FEATURED_H__ 
   36 #define __EST_FEATURED_H__ 
   39 #include "EST_Features.h" 
   62   void clear_features();
 
   64   void ensure_features(
void) 
 
   69   int f_Int(
const char *name, 
int def)
 const 
   70     { 
return p_features?p_features->
I(name, def):def; }
 
   71   int f_Int(
const char *name)
 const 
   72     { 
return p_features?p_features->
I(name):0; }
 
   73   int f_I(
const char *name, 
int def)
 const 
   74     {
return f_Int(name, def);}
 
   75   int f_I(
const char *name)
 const 
   78     { ensure_features(); p_features->
set(name, val); }
 
   79   void f_set_path(
const EST_String name, 
int val)
 
   80     { ensure_features(); p_features->
set_path(name, val); }
 
   83   float f_Float(
const char *name, 
float def)
 const 
   84     { 
return p_features?p_features->
F(name, def):def; }
 
   85   float f_Float(
const char *name)
 const 
   86     { 
return p_features?p_features->
F(name):0.0; }
 
   87   float f_F(
const char *name, 
float def)
 const 
   88     {
return f_Float(name, def);}
 
   89   float f_F(
const char *name)
 const 
   90     {
return f_Float(name);}
 
   92     { ensure_features(); p_features->
set(name, val); }
 
   93   void f_set_path(
const EST_String name, 
float val)
 
   94     { ensure_features(); p_features->
set_path(name, val); }
 
   98     { 
return p_features?p_features->
S(name, def):def; }
 
  102     {
return f_String(name, def);}
 
  104     {
return f_String(name);}
 
  105   void f_set(
const EST_String name, 
const char *val)
 
  106     { ensure_features(); p_features->
set(name, val); }
 
  107   void f_set_path(
const EST_String name, 
const char *val)
 
  108     { ensure_features(); p_features->
set_path(name, val); }
 
  112   const EST_Val &f_Val(
const char *name) 
const;
 
  115     {
return f_Val(name, def);}
 
  116   const EST_Val &f_V(
const char *name)
 const 
  117     {
return f_Val(name);}
 
  119     { ensure_features(); p_features->
set_val(name, val); }
 
  121     { ensure_features(); p_features->
set_path(name, val); }
 
  124     { ensure_features(); *p_features = f; }
 
  127     {
return p_features && p_features->
present(name); }
 
  130     { 
if (p_features) p_features->
remove(name); }
 
  139       { 
if (p_features) ip.i.
begin(*p_features);}
 
  140     void move_pointer_forwards(IPointer_feat &ip)
 const  
  142     bool points_to_something(
const IPointer_feat &ip)
 const  
  143       { 
return ip.i != 0; }