#include "classlist.h"
enum FunctionEncodingType {
- FUNC_UNASSIGNED, ENUMERATEIMPLICATIONS, CIRCUIT
+ FUNC_UNASSIGNED, ENUMERATEIMPLICATIONS, ENUMERATEIMPLICATIONSNEGATE, CIRCUIT
};
typedef enum FunctionEncodingType FunctionEncodingType;
union ElementPredicate {
- Element * function;
- Boolean * predicate;
+ Element *function;
+ Boolean *predicate;
};
typedef union ElementPredicate ElementPredicate;
-struct FunctionEncoding {
+class FunctionEncoding {
+public:
FunctionEncodingType type;
bool isFunction;//true for function, false for predicate
ElementPredicate op;
+ FunctionEncoding(Element *function);
+ FunctionEncoding(Boolean *predicate);
+ void setFunctionEncodingType(FunctionEncodingType type);
+ FunctionEncodingType getFunctionEncodingType() {return type;}
+ CMEMALLOC;
};
-inline FunctionEncoding* getFunctionEncoding(ASTNode func){
- switch(GETASTNODETYPE(func)){
- case ELEMFUNCRETURN:
- return &((ElementFunction*)func)->functionencoding;
- case PREDICATEOP:
- return &((BooleanPredicate*)func)->encoding;
- default:
- ASSERT(0);
- }
- return NULL;
-}
-
-void initFunctionEncoding(FunctionEncoding *encoding, Element *function);
-void initPredicateEncoding(FunctionEncoding *encoding, Boolean *predicate);
-void setFunctionEncodingType(FunctionEncoding* encoding, FunctionEncodingType type);
-void deleteFunctionEncoding(FunctionEncoding *This);
+
#endif