From 84f4004100fc1da5d70228e12c23b0d52d2cfa9e Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Thu, 26 Feb 2015 13:57:46 +0100
Subject: [PATCH] Added mark_begin and changed mark to mark_end to python
 writer

---
 lib/python/labcomm/LabComm.py      | 19 ++++++++++++-------
 lib/python/labcomm/StreamWriter.py |  5 ++++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/lib/python/labcomm/LabComm.py b/lib/python/labcomm/LabComm.py
index d702a1c..57f70f4 100644
--- a/lib/python/labcomm/LabComm.py
+++ b/lib/python/labcomm/LabComm.py
@@ -759,24 +759,29 @@ class Encoder(Codec):
         self.writer.write(packer.pack(format, *args))
 
     def add_decl(self, decl, index=0):
-        if super(Encoder, self).add_decl(decl, index) and index == 0:
-            decl.encode_decl(self)
-            self.writer.mark()
+        if index == 0:
+            self.writer.mark_begin(decl, None)
+            if super(Encoder, self).add_decl(decl, index):
+                decl.encode_decl(self)
+            self.writer.mark_end(decl, None)
  
     def add_ref(self, decl, index=0):
         ref = sample_ref(name=decl.name, decl=decl.decl, sample=decl)
-        if super(Encoder, self).add_ref(ref, index) and index == 0:
-            ref.encode_decl(self)
-            self.writer.mark()
+        if index == 0:
+            self.writer.mark_begin(decl, None)
+            if super(Encoder, self).add_ref(ref, index):
+                ref.encode_decl(self)
+            self.writer.mark_end(decl, None)
  
     def encode(self, object, decl=None):
         if decl == None:
             name = self.type_to_name[object.__class__]
             decl = self.name_to_decl[name]
+        self.writer.mark_begin(decl, object)
         self.encode_type_number(decl)
         with length_encoder(self) as e:
             decl.encode(e, object)
-        self.writer.mark()
+        self.writer.mark_end(decl, object)
 
     def encode_type_number(self, decl):
         try:
diff --git a/lib/python/labcomm/StreamWriter.py b/lib/python/labcomm/StreamWriter.py
index a85c43d..2fffc98 100644
--- a/lib/python/labcomm/StreamWriter.py
+++ b/lib/python/labcomm/StreamWriter.py
@@ -10,7 +10,10 @@ class StreamWriter:
         self.stream.write(data)
         pass
 
-    def mark(self):
+    def mark_begin(self, decl, value):
+        pass
+
+    def mark_end(self, decl, value):
         self.stream.flush()
         pass
 
-- 
GitLab