AST Serialization : 20/15420/1
Antoine ELIAS [Fri, 24 Oct 2014 13:24:11 +0000 (15:24 +0200)]
 - remove execution flag.
 - add option to remove location.

Change-Id: Ic88925e3c5c9ad62bed3cdf7173fa09da1699344

scilab/modules/ast/includes/ast/deserializervisitor.hxx
scilab/modules/ast/includes/ast/serializervisitor.hxx
scilab/modules/ast/src/cpp/types/macro.cpp

index 17b5c4b..8c46eba 100644 (file)
@@ -227,13 +227,6 @@ private :
         size_t nodeNumber = get_uint64();
         Location loc = get_location();
         bool isVerbose = get_bool();
-        int isBreak = get_bool();
-        int isBreakable = get_bool();
-        int isReturn = get_bool();
-        int isReturnable = get_bool();
-        int isContinue = get_bool();
-        int isContinuable = get_bool();
-
 
         switch (code)
         {
@@ -529,31 +522,6 @@ private :
         }
 
         exp->setVerbose(isVerbose);
-        if (isBreak)
-        {
-            exp->setBreak();
-        }
-        if (isBreakable)
-        {
-            exp->setBreakable();
-        }
-        if (isReturn)
-        {
-            exp->setReturn();
-        }
-        if (isReturnable)
-        {
-            exp->setReturnable();
-        }
-        if (isContinue)
-        {
-            exp->setContinue();
-        }
-        if (isContinuable)
-        {
-            exp->setContinuable();
-        }
-
         if (nodeNumber != 0)
         {
             exp->setNodeNumber(nodeNumber);
index 551940e..acab955 100644 (file)
@@ -31,6 +31,7 @@ private :
     int buflen;
     int bufsize;
     bool saveNodeNumber;
+    bool saveLocation;
 
     unsigned char* get_buf(void)
     {
@@ -71,10 +72,20 @@ private :
 
     void add_location(const Location& loc)
     {
-        add_uint32(loc.first_line);
-        add_uint32(loc.first_column);
-        add_uint32(loc.last_line);
-        add_uint32(loc.last_column);
+        if (saveLocation)
+        {
+            add_uint32(loc.first_line);
+            add_uint32(loc.first_column);
+            add_uint32(loc.last_line);
+            add_uint32(loc.last_column);
+        }
+        else
+        {
+            add_uint32(0);
+            add_uint32(0);
+            add_uint32(0);
+            add_uint32(0);
+        }
     }
     void add_ast(unsigned int code, const Exp& e)
     {
@@ -87,14 +98,9 @@ private :
         {
             add_uint64((unsigned long long)0);
         }
+
         add_location(e.getLocation());
         add_uint8(e.isVerbose());
-        add_uint8(e.isBreak());
-        add_uint8(e.isBreakable());
-        add_uint8(e.isReturn());
-        add_uint8(e.isReturnable());
-        add_uint8(e.isContinue());
-        add_uint8(e.isContinuable());
     }
 
     /** @{ Low-level append to the buffer functions */
@@ -580,9 +586,10 @@ private :
 public :
     SerializeVisitor(Exp* _ast) : ast(_ast), buf(NULL), buflen(0), bufsize(0), saveNodeNumber(true) {}
 
-    unsigned char* serialize(bool _saveNodeNumber = true)
+    unsigned char* serialize(bool _saveNodeNumber = true, bool _saveLocation = true)
     {
         saveNodeNumber = _saveNodeNumber;
+        saveLocation = _saveLocation;
         ast->getOriginal()->accept(*this);
         return get_buf();
     }
index 8aa50a7..4a83605 100644 (file)
@@ -421,9 +421,9 @@ bool Macro::operator==(const InternalType& it)
 
     ast::Exp* pExp = pRight->getBody();
     ast::SerializeVisitor serialOld(pExp);
-    unsigned char* oldSerial = serialOld.serialize(false);
+    unsigned char* oldSerial = serialOld.serialize(false, false);
     ast::SerializeVisitor serialMacro(m_body);
-    unsigned char* macroSerial = serialMacro.serialize(false);
+    unsigned char* macroSerial = serialMacro.serialize(false, false);
 
     //check buffer length
     unsigned int oldSize = *((unsigned int*)oldSerial);