objdictgen/node.py
changeset 281 685d9a26e4f9
parent 274 39beb1c7542a
child 284 24bf3d692993
--- a/objdictgen/node.py	Mon Sep 24 09:37:04 2007 +0200
+++ b/objdictgen/node.py	Tue Sep 25 08:19:44 2007 +0200
@@ -738,6 +738,11 @@
                     self.UserMapping[index]["values"] = values
                 return True
             elif 0 <= subIndex < len(self.UserMapping[index]["values"]) and values != None:
+                if "type" in values:
+                    if self.IsStringType(values["type"]) and not self.IsStringType(self.UserMapping[index]["values"][subIndex]["type"]):
+                        self.SetEntry(index, subIndex, "")
+                    elif not self.IsStringType(values["type"]) and self.IsStringType(self.UserMapping[index]["values"][subIndex]["type"]):
+                        self.SetEntry(index, subIndex, 0)
                 self.UserMapping[index]["values"][subIndex].update(values)
                 return True
         return False
@@ -972,6 +977,19 @@
         return dic
 
 #-------------------------------------------------------------------------------
+#                            Type helper functions
+#-------------------------------------------------------------------------------
+
+    def IsStringType(self, index):
+        if index in (0x9, 0xA, 0xB):
+            return True
+        elif 0xA0 <= index < 0x100:
+            result = self.GetEntry(index, 1)
+            if result is not None and result in (0x9, 0xA, 0xB):
+                return True
+        return False
+
+#-------------------------------------------------------------------------------
 #                            Type and Map Variable Lists
 #-------------------------------------------------------------------------------