From 5841c9a95d853e3285c822b38a825dc915b6b56c Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Wed, 25 Feb 2015 13:07:53 +0100
Subject: [PATCH] Made python remember seen signatures.

---
 lib/python/labcomm/LabComm.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/python/labcomm/LabComm.py b/lib/python/labcomm/LabComm.py
index 3816c0f..bf23fe5 100644
--- a/lib/python/labcomm/LabComm.py
+++ b/lib/python/labcomm/LabComm.py
@@ -691,6 +691,8 @@ class Codec(object):
         
     def add_decl(self, decl, index=0):
         if index == 0:
+            if decl in self.decl_to_index:
+                return False
             index = self.decl_index
             self.decl_index += 1
         self.index_to_decl[index] = decl
@@ -699,9 +701,12 @@ class Codec(object):
             self.name_to_decl[decl.name] = decl
         except:
             pass
+        return True
         
     def add_ref(self, ref, index=0):
         if index == 0:
+            if ref.sample in self.ref_to_index:
+                return False
             index = self.ref_index
             self.ref_index += 1
         self.index_to_ref[index] = ref.sample
@@ -710,7 +715,8 @@ class Codec(object):
             self.name_to_ref[ref.sample.name] = ref.sample
         except:
             pass
-
+        return True
+    
     def add_binding(self, name, decl):
         self.type_to_name[decl] = name
         self.name_to_type[name] = decl
@@ -744,15 +750,13 @@ class Encoder(Codec):
         self.writer.write(packer.pack(format, *args))
 
     def add_decl(self, decl, index=0):
-        super(Encoder, self).add_decl(decl, index)
-        if index == 0:
+        if super(Encoder, self).add_decl(decl, index) and index == 0:
             decl.encode_decl(self)
             self.writer.mark()
  
     def add_ref(self, decl, index=0):
         ref = sample_ref(name=decl.name, decl=decl.decl, sample=decl)
-        super(Encoder, self).add_ref(ref, index)
-        if index == 0:
+        if super(Encoder, self).add_ref(ref, index) and index == 0:
             ref.encode_decl(self)
             self.writer.mark()
  
-- 
GitLab