Compiles
[satune.git] / src / AST / element.h
index 3385d41bdd24f0e9225f0ef9f4680912965ae710..c3a3ed9fe2bd764207756b8fdfbc755cd1dfd0cc 100644 (file)
@@ -8,42 +8,43 @@
 #include "elementencoding.h"
 #include "boolean.h"
 
-#define GETELEMENTTYPE(o) (o->type)
-#define GETELEMENTPARENTS(o) (&((Element *)o)->parents)
 class Element : public ASTNode {
- public:
+public:
        Element(ASTNodeType type);
-       ~Element();
-       VectorASTNode parents;
+       virtual ~Element() {}
+       Vector<ASTNode *> parents;
        ElementEncoding encoding;
-       MEMALLOC;
+       virtual Element *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;};
+
+       CMEMALLOC;
 };
 
 class ElementConst : public Element {
- public:
-       ElementConst(uint64_t value, VarType type);
-       ~ElementConst();
+public:
+       ElementConst(uint64_t value, VarType type, Set *_set);
        Set *set;
        uint64_t value;
-       MEMALLOC;
+       Element *clone(CSolver *solver, CloneMap *map);
+       CMEMALLOC;
 };
 
 class ElementSet : public Element {
- public:
+public:
        ElementSet(Set *s);
        Set *set;
-       MEMALLOC;
+       Element *clone(CSolver *solver, CloneMap *map);
+       CMEMALLOC;
 };
 
 class ElementFunction : public Element {
- public:
-       ElementFunction(Function *function, Element **array, uint numArrays, Boolean *overflowstatus);
-       ~ElementFunction();
+public:
+       ElementFunction(Function *function, Element **array, uint numArrays, BooleanEdge overflowstatus);
        Function *function;
        Array<Element *> inputs;
-       Boolean *overflowstatus;
+       BooleanEdge overflowstatus;
        FunctionEncoding functionencoding;
-       MEMALLOC;
+       Element *clone(CSolver *solver, CloneMap *map);
+       CMEMALLOC;
 };
 
 Set *getElementSet(Element *This);