Merge
[satune.git] / src / Serialize / serializer.cc
index bf894563cdb749ef3bb7108a74107a56d44acd3e..118cf867296a2c680b3b1e55831affaa2a553baf 100644 (file)
@@ -1,8 +1,8 @@
 
-/* 
+/*
  * File:   serializer.cc
  * Author: hamed
- * 
+ *
  * Created on September 7, 2017, 3:38 PM
  */
 
 #include "boolean.h"
 
 Serializer::Serializer(const char *file) {
-       filedesc = open(file, O_WRONLY | O_CREAT, 0666);
+       filedesc = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+
        if (filedesc < 0) {
                exit(-1);
        }
 }
 
 Serializer::~Serializer() {
-       if (-1 == close(filedesc)){
+       if (-1 == close(filedesc)) {
                exit(-1);
        }
 }
 
-void Serializer::mywrite(const void *__buf, size_t __n){
-       write (1, __buf, __n);
-       model_print("\n");
+void Serializer::mywrite(const void *__buf, size_t __n) {
        write (filedesc, __buf, __n);
 }
 
 
-void serializeBooleanEdge(Serializer* serializer, BooleanEdge& be){
-       if(serializer->isSerialized(be.getRaw()))
-               return;
-       serializer->addObject(be.getRaw());
+void serializeBooleanEdge(Serializer *serializer, BooleanEdge be, bool isTopLevel) {
+       if (be == BooleanEdge(NULL)){
+                return;
+        }
        be.getBoolean()->serialize(serializer);
        ASTNodeType type = BOOLEANEDGE;
        serializer->mywrite(&type, sizeof(ASTNodeType));
-       serializer->mywrite(be.getRaw(), sizeof(Boolean*));
+       Boolean *boolean = be.getRaw();
+       serializer->mywrite(&boolean, sizeof(Boolean *));
+        serializer->mywrite(&isTopLevel, sizeof(bool));
 }
\ No newline at end of file