about summary refs log tree commit diff
path: root/src/fix-ng/fix-expr.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/fix-ng/fix-expr.hh')
-rw-r--r--src/fix-ng/fix-expr.hh40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/fix-ng/fix-expr.hh b/src/fix-ng/fix-expr.hh
index 700f7beca906..93a010abeda6 100644
--- a/src/fix-ng/fix-expr.hh
+++ b/src/fix-ng/fix-expr.hh
@@ -14,6 +14,38 @@
 typedef ATerm Expr;
 
 
+/* Mappings from ATerms to ATerms.  This is just a wrapper around
+   ATerm tables. */
+class ATermMap
+{
+private:
+    unsigned int maxLoadPct;
+    ATermTable table;
+    
+public:
+    ATermMap(unsigned int initialSize = 16, unsigned int maxLoadPct = 75);
+    ATermMap(const ATermMap & map);
+    ~ATermMap();
+
+    void set(ATerm key, ATerm value);
+    void set(const string & key, ATerm value);
+
+    ATerm get(ATerm key) const;
+    ATerm get(const string & key) const;
+
+    void remove(ATerm key);
+    void remove(const string & key);
+
+    ATermList keys() const;
+};
+
+
+/* Convert a string to an ATerm (i.e., a quoted nullary function
+   applicaton). */
+ATerm string2ATerm(const string & s);
+string aterm2String(ATerm t);
+
+
 /* Generic bottomup traversal over ATerms.  The traversal first
    recursively descends into subterms, and then applies the given term
    function to the resulting term. */
@@ -25,19 +57,17 @@ ATerm bottomupRewrite(TermFun & f, ATerm e);
 
 /* Query all attributes in an attribute set expression.  The
    expression must be in normal form. */
-typedef map<string, Expr> Attrs;
-void queryAllAttrs(Expr e, Attrs & attrs);
+void queryAllAttrs(Expr e, ATermMap & attrs);
 
 /* Query a specific attribute from an attribute set expression.  The
    expression must be in normal form. */
 Expr queryAttr(Expr e, const string & name);
 
 /* Create an attribute set expression from an Attrs value. */
-Expr makeAttrs(const Attrs & attrs);
+Expr makeAttrs(const ATermMap & attrs);
 
 /* Perform a set of substitutions on an expression. */
-typedef map<string, Expr> Subs;
-ATerm substitute(Subs & subs, ATerm e);
+Expr substitute(const ATermMap & subs, Expr e);
 
 
 #endif /* !__FIXEXPR_H */