projects
/
satune.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BooleanOrder (de)serialization works ...
[satune.git]
/
src
/
AST
/
boolean.h
diff --git
a/src/AST/boolean.h
b/src/AST/boolean.h
index 894e6cb071eee91e50ea839b98655b3641713a20..1c45f04b0cdfeb4c73733f67050084249c4c7f52 100644
(file)
--- a/
src/AST/boolean.h
+++ b/
src/AST/boolean.h
@@
-3,72
+3,95
@@
#include "classlist.h"
#include "mymemory.h"
#include "ops.h"
#include "classlist.h"
#include "mymemory.h"
#include "ops.h"
+#include "astops.h"
#include "structs.h"
#include "astnode.h"
#include "functionencoding.h"
#include "constraint.h"
#include "structs.h"
#include "astnode.h"
#include "functionencoding.h"
#include "constraint.h"
+#include "serializable.h"
+#include "serializer.h"
-class Boolean : public ASTNode {
+class Boolean : public ASTNode
, public Serializable
{
public:
Boolean(ASTNodeType _type);
virtual ~Boolean() {}
public:
Boolean(ASTNodeType _type);
virtual ~Boolean() {}
- virtual Boolean *clone(CSolver *solver, CloneMap *map) { ASSERT(0); return NULL; }
+ virtual Boolean *clone(CSolver *solver, CloneMap *map) = 0;
+ virtual void serialize(Serializer* ) = 0;
+ virtual bool isTrue() {return boolVal == BV_MUSTBETRUE;}
+ virtual bool isFalse() {return boolVal == BV_MUSTBEFALSE;}
Polarity polarity;
BooleanValue boolVal;
Vector<Boolean *> parents;
Polarity polarity;
BooleanValue boolVal;
Vector<Boolean *> parents;
-
- MEMALLOC;
+ virtual void updateParents() {}
+
+ CMEMALLOC;
};
class BooleanConst : public Boolean {
};
class BooleanConst : public Boolean {
-
public:
+public:
BooleanConst(bool isTrue);
Boolean *clone(CSolver *solver, CloneMap *map);
BooleanConst(bool isTrue);
Boolean *clone(CSolver *solver, CloneMap *map);
- bool isTrue;
- MEMALLOC;
+ bool isTrue() {return istrue;}
+ bool isFalse() {return !istrue;}
+ void serialize(Serializer *serializer ){};
+
+ bool istrue;
+ CMEMALLOC;
};
class BooleanVar : public Boolean {
public:
BooleanVar(VarType t);
Boolean *clone(CSolver *solver, CloneMap *map);
};
class BooleanVar : public Boolean {
public:
BooleanVar(VarType t);
Boolean *clone(CSolver *solver, CloneMap *map);
-
+ void serialize(Serializer *serializer );
+
VarType vtype;
Edge var;
VarType vtype;
Edge var;
- MEMALLOC;
+
C
MEMALLOC;
};
class BooleanOrder : public Boolean {
public:
BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
Boolean *clone(CSolver *solver, CloneMap *map);
};
class BooleanOrder : public Boolean {
public:
BooleanOrder(Order *_order, uint64_t _first, uint64_t _second);
Boolean *clone(CSolver *solver, CloneMap *map);
-
+ void serialize(Serializer *serializer );
+
Order *order;
uint64_t first;
uint64_t second;
Order *order;
uint64_t first;
uint64_t second;
- MEMALLOC;
+
C
MEMALLOC;
};
class BooleanPredicate : public Boolean {
public:
};
class BooleanPredicate : public Boolean {
public:
- BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, Boolean
*
_undefinedStatus);
+ BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, Boolean
Edge
_undefinedStatus);
Boolean *clone(CSolver *solver, CloneMap *map);
Boolean *clone(CSolver *solver, CloneMap *map);
+ void serialize(Serializer *serializer );
Predicate *predicate;
FunctionEncoding encoding;
Array<Element *> inputs;
Predicate *predicate;
FunctionEncoding encoding;
Array<Element *> inputs;
- Boolean
*
undefStatus;
+ Boolean
Edge
undefStatus;
FunctionEncoding *getFunctionEncoding() {return &encoding;}
FunctionEncoding *getFunctionEncoding() {return &encoding;}
- MEMALLOC;
+ void updateParents();
+
+ CMEMALLOC;
};
class BooleanLogic : public Boolean {
public:
};
class BooleanLogic : public Boolean {
public:
- BooleanLogic(CSolver *solver, LogicOp _op, Boolean
*
*array, uint asize);
+ BooleanLogic(CSolver *solver, LogicOp _op, Boolean
Edge
*array, uint asize);
Boolean *clone(CSolver *solver, CloneMap *map);
Boolean *clone(CSolver *solver, CloneMap *map);
-
+ void serialize(Serializer *serializer );
+
LogicOp op;
LogicOp op;
- Array<Boolean *> inputs;
- MEMALLOC;
+ bool replaced;
+ Array<BooleanEdge> inputs;
+ void updateParents();
+
+ CMEMALLOC;
};
};
+BooleanEdge cloneEdge(CSolver *solver, CloneMap *map, BooleanEdge e);
+
+
#endif
#endif