1+ from typing import cast
12from sourcehold .structure_tools import _resolve_cls_as_type , create_structure_from_buffer
23
34
@@ -107,6 +108,7 @@ def deserialize_from_buffer(self, buf: Buffer, **kwargs):
107108 if self .array_size == "*" :
108109 s = struct .calcsize (self .type )
109110 r = []
111+ raise Exception ("fixme: do we have break_array?" )
110112 while not self .break_array (buf ):
111113 r .append (struct .unpack (self .type , buf .read (s ))[0 ])
112114 #return r
@@ -128,17 +130,18 @@ def deserialize_from_buffer(self, buf: Buffer, **kwargs):
128130 return r
129131 elif self .type .__class__ == type :
130132 if self .array_size == 0 :
131- r = create_structure_from_buffer (self .type , buf , ** kwargs )
133+ r = create_structure_from_buffer (cast ( type , self .type ) , buf , ** kwargs )
132134 return r
133135 else :
134136 if self .array_size == "*" :
135137 s = struct .calcsize (self .type )
136138 r = []
139+ raise Exception ("fixme: do we have break_array?" )
137140 while not self .break_array (buf ):
138141 r .append (create_structure_from_buffer (self .type , buf , ** kwargs ))
139142 return r
140143 elif self .array_size .__class__ == int :
141- r = [create_structure_from_buffer (self .type , buf , ** kwargs ) for i in range (self .array_size )]
144+ r = [create_structure_from_buffer (cast ( type , self .type ) , buf , ** kwargs ) for i in range (self .array_size )]
142145 return r
143146 elif self .array_size .__class__ .__name__ == 'function' :
144147 raise NotImplementedError ()
0 commit comments