]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Working htsmsg.py
authorChristian KarriƩ <christian@karrie.info>
Wed, 17 Aug 2016 08:55:33 +0000 (10:55 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 17 Aug 2016 12:29:18 +0000 (14:29 +0200)
lib/py/tvh/htsmsg.py

index 03ac1ba34cb4e8aa26371c189dda10cf604079b3..af0722c66213a56c9ae6797311400f623fab1780 100644 (file)
@@ -49,6 +49,8 @@ HMF_S64  = 2
 HMF_STR  = 3
 HMF_BIN  = 4
 HMF_LIST = 5
+HMF_DBL = 6
+HMF_BOOL = 7
 
 # Light wrapper for binary type
 class hmf_bin(str):
@@ -57,9 +59,9 @@ class hmf_bin(str):
 # Convert python to HTSMSG type
 def hmf_type ( f ):
   if type(f) == list:
-    return HMF_MAP
-  elif type(f) == dict:
     return HMF_LIST
+  elif type(f) == dict:
+    return HMF_MAP
   elif type(f) == str:
     return HMF_STR
   elif type(f) == int:
@@ -78,7 +80,7 @@ def _binary_count ( f ):
     while (f):
       ret = ret + 1
       f   = f >> 8
-  elif type(f) in [ list, map ]:
+  elif type(f) in [ list, dict ]:
     ret = ret + binary_count(f)
   else:
     raise Exception('invalid data type')
@@ -157,6 +159,12 @@ def deserialize0 ( data, typ = HMF_MAP ):
         i    = i - 1
     elif typ in [ HMF_LIST, HMF_MAP ]:
       item = deserialize0(data[:dlen], typ)
+    elif typ == HMF_BOOL:
+      bool_val = data[:dlen]
+      if len(bool_val) > 0:
+        item = bool(ord(bool_val))
+      else:
+        item = None
     else:
       raise Exception('invalid data type %d' % typ)
     if islist: