bf894563cdb749ef3bb7108a74107a56d44acd3e
[satune.git] / src / Serialize / serializer.cc
1
2 /* 
3  * File:   serializer.cc
4  * Author: hamed
5  * 
6  * Created on September 7, 2017, 3:38 PM
7  */
8
9 #include "serializer.h"
10 #include "unistd.h"
11 #include "fcntl.h"
12 #include "boolean.h"
13
14 Serializer::Serializer(const char *file) {
15         filedesc = open(file, O_WRONLY | O_CREAT, 0666);
16  
17         if (filedesc < 0) {
18                 exit(-1);
19         }
20 }
21
22 Serializer::~Serializer() {
23         if (-1 == close(filedesc)){
24                 exit(-1);
25         }
26 }
27
28 void Serializer::mywrite(const void *__buf, size_t __n){
29         write (1, __buf, __n);
30         model_print("\n");
31         write (filedesc, __buf, __n);
32 }
33
34
35 void serializeBooleanEdge(Serializer* serializer, BooleanEdge& be){
36         if(serializer->isSerialized(be.getRaw()))
37                 return;
38         serializer->addObject(be.getRaw());
39         be.getBoolean()->serialize(serializer);
40         ASTNodeType type = BOOLEANEDGE;
41         serializer->mywrite(&type, sizeof(ASTNodeType));
42         serializer->mywrite(be.getRaw(), sizeof(Boolean*));
43 }