Merge
authorbdemsky <bdemsky@uci.edu>
Mon, 11 Sep 2017 23:27:01 +0000 (16:27 -0700)
committerbdemsky <bdemsky@uci.edu>
Mon, 11 Sep 2017 23:27:01 +0000 (16:27 -0700)
1  2 
src/AST/astops.h
src/AST/boolean.h
src/AST/element.cc
src/AST/element.h
src/AST/predicate.cc
src/AST/predicate.h
src/Collections/structs.h
src/Serialize/serializer.h

Simple merge
index 9d7e9ab16df375e9fc5a2cc4d2708abf75bba99e,df1f4e8c152f1f86f88feddfb0e6d3b1eb8167e9..6449a8e0f0eed13ff7559839123d25b937442f19
@@@ -61,11 -65,8 +65,13 @@@ class BooleanPredicate : public Boolea
  public:
        BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, BooleanEdge _undefinedStatus);
        Boolean *clone(CSolver *solver, CloneMap *map);
-       CMEMALLOC;
 +      Predicate *getPredicate() {return predicate;}
 +      FunctionEncoding *getFunctionEncoding() {return &encoding;}
 +      void updateParents();
+       void serialize(Serializer *serializer );
 +      
++      CMEMALLOC;
        Predicate *predicate;
        FunctionEncoding encoding;
        Array<Element *> inputs;
Simple merge
index db1cbfb6b00f7f203851af0500451394bfced602,19e35b68f5d07f6c50e78488481f6421032b147f..b829a47f07a14d32a6c7a4006cd4098c17d3a19d
@@@ -47,12 -51,10 +50,13 @@@ public
        BooleanEdge overflowstatus;
        FunctionEncoding functionencoding;
        Element *clone(CSolver *solver, CloneMap *map);
+       virtual void serialize(Serializer* serializer);
        Set * getRange();
        void updateParents();
 +      Function * getFunction() {return function;}
        CMEMALLOC;
 + private:
 +      Function *function;
  };
  
  static inline ElementEncoding *getElementEncoding(Element *e) {
Simple merge
index 80515fa9e06a75968ae1e53507bcd7c1577f2db4,2f292b21c37741b3d9e3815bcffed27091278f41..beaebc9b09989122f45d64573a0e7868c499f0b2
@@@ -21,11 -22,10 +22,12 @@@ public
        PredicateOperator(CompOp op, Set **domain, uint numDomain);
        bool evalPredicateOperator(uint64_t *inputs);
        Predicate *clone(CSolver *solver, CloneMap *map);
-       CompOp getOp() {return op;}
+       virtual void serialize(Serializer* serializer);
 -      CompOp op;
        Array<Set *> domains;
++      CompOp getOp() {return op;}
        CMEMALLOC;
 + private:
 +      CompOp op;
  };
  
  class PredicateTable : public Predicate {
index 1e957ae997a7a01783dbd9b81d5e06a710f77c04,e6f451ed3d6ba0f0b9997104ac2c5f3dad40b698..d5d6f5ef74f72678c98007a13e4823063394931e
@@@ -26,17 -26,13 +26,16 @@@ typedef Hashset<OrderElement *, uintptr
  typedef Hashset<Boolean *, uintptr_t, PTRSHIFT> HashsetBoolean;
  typedef Hashset<Element *, uintptr_t, PTRSHIFT> HashsetElement;
  typedef SetIterator<Boolean *, uintptr_t, PTRSHIFT> SetIteratorBoolean;
 +typedef Hashset<uint64_t, uint64_t, 0> Hashset64Int;
 +
  typedef Hashtable<OrderNode *, HashsetOrderNode *, uintptr_t, PTRSHIFT> HashtableNodeToNodeSet;
  typedef Hashtable<OrderPair *, OrderPair *, uintptr_t, PTRSHIFT, order_pair_hash_function, order_pair_equals> HashtableOrderPair;
  typedef Hashtable<void *, void *, uintptr_t, PTRSHIFT> CloneMap;
  
  
 -typedef Hashtable<Set *, EncodingNode *, uintptr_t, PTRSHIFT> HashTableEncoding;
 +typedef Hashtable<Set *, EncodingNode *, uintptr_t, PTRSHIFT> HashtableEncoding;
- typedef Hashset<EncodingNode *, uintptr_t, PTRSHIFT> HashsetEncodingNode;
- typedef SetIterator<EncodingNode *, uintptr_t, PTRSHIFT> SetIteratorEncodingNode;
 +
  
  typedef SetIterator<TableEntry *, uintptr_t, PTRSHIFT, table_entry_hash_function, table_entry_equals> SetIteratorTableEntry;
  typedef SetIterator<OrderEdge *, uintptr_t, PTRSHIFT, order_edge_hash_function, order_edge_equals> SetIteratorOrderEdge;
index 0000000000000000000000000000000000000000,12bff1306ecd9b47c7e77753bd23fbbab3a2e338..e6d2b50bce8707d23ae4a379c411ff936926a957
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,37 +1,39 @@@
+ /* 
+  * File:   serializer.h
+  * Author: hamed
+  *
+  * Created on September 7, 2017, 3:38 PM
+  */
+ #ifndef SERIALIZER_H
+ #define SERIALIZER_H
+ #include "mymemory.h"
++#include "classlist.h"
+ #include "structs.h"
++
+ class Serializer {
+ public:
+       Serializer(const char *file);
+       void mywrite(const void *__buf, size_t __n);
+       inline bool isSerialized(void *obj);
+       inline void addObject(void *obj) { map.put(obj, obj);}
+       virtual ~Serializer();
+       CMEMALLOC;
+ private:
+       int filedesc;
+       CloneMap map;
+ };
+ inline bool Serializer::isSerialized(void* obj){
+       return map.contains(obj);
+ }
+ void serializeBooleanEdge(Serializer* serializer, BooleanEdge be);
+ #endif /* SERIALIZER_H */