44import tabulate
55from ..exceptions import TypeTreeError as TypeTreeError
66
7+ kAlignBytes = 0x4000
78
89class TypeTreeNode (object ):
910 __slots__ = (
@@ -176,17 +177,12 @@ def read_typetree(
176177 nodes , reader .read_bytes (reader .byte_size ), reader .endian
177178 )
178179
179- obj = {}
180- i = c_uint32 (1 )
181- while i .value < len (nodes ):
182- node = nodes [i .value ]
183- obj [node .name ] = read_value (nodes , reader , i )
184- i .value += 1
180+ obj = read_value (nodes , reader , c_uint32 (0 ))
185181
186- readed = reader .Position - reader .byte_start
187- if readed != reader .byte_size :
182+ read = reader .Position - reader .byte_start
183+ if read != reader .byte_size :
188184 raise TypeTreeError (
189- f"Error while read type, read { readed } bytes but expected { reader .byte_size } bytes" ,
185+ f"Error while read type, read { read } bytes but expected { reader .byte_size } bytes" ,
190186 nodes ,
191187 )
192188
@@ -196,7 +192,7 @@ def read_typetree(
196192def read_value (nodes : List [TypeTreeNode ], reader : EndianBinaryReader , i : c_uint32 ):
197193 node = nodes [i .value ]
198194 typ = node .type
199- align = (node .meta_flag & 0x4000 ) != 0
195+ align = (node .meta_flag & kAlignBytes ) != 0
200196
201197 if typ == "SInt8" :
202198 value = reader .read_byte ()
@@ -224,7 +220,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3
224220 value = reader .read_aligned_string ()
225221 i .value += 3 # Array, Size, Data(typ)
226222 elif typ == "map" : # map == MultiDict
227- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
223+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
228224 align = True
229225 map_ = get_nodes (nodes , i .value )
230226 i .value += len (map_ ) - 1
@@ -242,7 +238,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3
242238 else :
243239 # Vector
244240 if i .value < len (nodes ) - 1 and nodes [i .value + 1 ].type == "Array" :
245- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
241+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
246242 align = True
247243 vector = get_nodes (nodes , i .value )
248244 i .value += len (vector ) - 1
@@ -305,7 +301,7 @@ def read_value_str(
305301) -> list :
306302 node = nodes [i .value ]
307303 typ = node .type
308- align = (node .meta_flag & 0x4000 ) != 0
304+ align = (node .meta_flag & kAlignBytes ) != 0
309305 append = True
310306
311307 if typ == "SInt8" :
@@ -340,7 +336,7 @@ def read_value_str(
340336 )
341337 )
342338 elif typ == "map" :
343- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
339+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
344340 align = True
345341 map_ = get_nodes (nodes , i .value )
346342 i .value += len (map_ ) - 1
@@ -370,7 +366,7 @@ def read_value_str(
370366 else :
371367 # Vector
372368 if i .value < len (nodes ) - 1 and nodes [i .value + 1 ].type == "Array" :
373- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
369+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
374370 align = True
375371 vector = get_nodes (nodes , i .value )
376372 i .value += len (vector ) - 1
@@ -466,7 +462,7 @@ def write_value(
466462):
467463 node = nodes [i .value ]
468464 typ = node .type
469- align = (node .meta_flag & 0x4000 ) != 0
465+ align = (node .meta_flag & kAlignBytes ) != 0
470466
471467 if typ == "SInt8" :
472468 writer .write_byte (value )
@@ -494,7 +490,7 @@ def write_value(
494490 writer .write_aligned_string (value )
495491 i .value += 3 # Array, Size, Data(typ)
496492 elif typ == "map" :
497- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
493+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
498494 align = True
499495 map_ = get_nodes (nodes , i .value )
500496 i .value += len (map_ ) - 1
@@ -514,7 +510,7 @@ def write_value(
514510 else :
515511 # Vector
516512 if i .value < len (nodes ) - 1 and nodes [i .value + 1 ].type == "Array" :
517- if (nodes [i .value + 1 ].meta_flag & 0x4000 ) != 0 :
513+ if (nodes [i .value + 1 ].meta_flag & kAlignBytes ) != 0 :
518514 align = True
519515 vector = get_nodes (nodes , i .value )
520516 i .value += len (vector ) - 1
0 commit comments