ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/lsys/attr.h
Revision: 1.1
Committed: Thu Nov 6 14:31:24 2008 UTC (15 years, 6 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 /*
2     * attributes and attribute sets
3     */
4    
5     #ifndef ATTR_H
6     #define ATTR_H
7    
8     #include <string>
9     #include <map>
10    
11     #include "lsys.h"
12     #include "util.h"
13     #include "matrix.h"
14    
15     using namespace std;
16    
17     struct attribute_set : public shared<module_map> {
18     const module *operator ()(const string &attr) const t_no
19     { const_iterator i; return (i = obj->find (attr)) == end () ? 0 : &i->second; }
20     string operator ()(const string &attr, const string &def) const t_no
21     { const_iterator i; return (i = obj->find (attr)) == end () ? def : i->second.first ().str; }
22     double operator ()(const string &attr, double def) const t_err
23     { const_iterator i; return (i = obj->find (attr)) == end () ? def : eval_expr (i->second); }
24     vec operator ()(const string &attr, const vec &def) const t_err;
25    
26     const_iterator find (const string &s) const t_no { return obj->find (s); };
27    
28     const module &operator [](const string &s) const t_no { return (*obj)[s]; };
29     module &operator [](const string &s) t_no { unshare (); return (*obj)[s]; };
30     };
31    
32     #endif