8
8
from zserio .bitbuffer import BitBuffer
9
9
from zserio .bitreader import BitStreamReader
10
10
11
- def serialize (obj : typing .Any ) -> BitBuffer :
11
+ def serialize (obj : typing .Any , * , call_initialize_offsets = True ) -> BitBuffer :
12
12
"""
13
13
Serializes generated object to the bit buffer.
14
14
@@ -28,13 +28,12 @@ def serialize(obj: typing.Any) -> BitBuffer:
28
28
bitbuffer = zserio.serialize(obj)
29
29
30
30
:param obj: Generated object to serialize.
31
+ :param call_initialize_offsets: True to call initialize_offsets() method on generated object.
31
32
:returns: Bit buffer which represents generated object in binary format.
32
33
:raises PythonRuntimeException: Throws in case of any error during serialization.
33
34
"""
34
35
35
- writer = BitStreamWriter ()
36
- obj .initialize_offsets (writer .bitposition )
37
- obj .write (writer )
36
+ writer = _serialize (obj , call_initialize_offsets )
38
37
39
38
return BitBuffer (writer .byte_array , writer .bitposition )
40
39
@@ -62,7 +61,7 @@ def deserialize(obj_class: typing.Type[typing.Any], bitbuffer: BitBuffer, *args)
62
61
63
62
return obj_class .from_reader (reader , * args )
64
63
65
- def serialize_to_bytes (obj : typing .Any ) -> bytes :
64
+ def serialize_to_bytes (obj : typing .Any , * , call_initialize_offsets = True ) -> bytes :
66
65
"""
67
66
Serializes generated object to the byte buffer.
68
67
@@ -84,11 +83,12 @@ def serialize_to_bytes(obj: typing.Any) -> bytes:
84
83
buffer = zserio.serialize_to_bytes(obj)
85
84
86
85
:param obj: Generated object to serialize.
86
+ :param call_initialize_offsets: True to call initialize_offsets() method on generated object.
87
87
:returns: Bytes which represents generated object in binary format.
88
88
:raises PythonRuntimeException: Throws in case of any error during serialization.
89
89
"""
90
90
91
- bitbuffer = serialize (obj )
91
+ bitbuffer = serialize (obj , call_initialize_offsets = call_initialize_offsets )
92
92
93
93
return bitbuffer .buffer
94
94
@@ -120,7 +120,7 @@ def deserialize_bytes(obj_class: typing.Type[typing.Any], buffer: bytes, *args)
120
120
121
121
return deserialize (obj_class , bitbuffer , * args )
122
122
123
- def serialize_to_file (obj : typing .Any , filename : str ) -> None :
123
+ def serialize_to_file (obj : typing .Any , filename : str , * , call_initialize_offsets = True ) -> None :
124
124
"""
125
125
Serializes generated object to the file.
126
126
@@ -138,13 +138,12 @@ def serialize_to_file(obj: typing.Any, filename: str) -> None:
138
138
buffer = zserio.serialize_to_file(obj, "file_name.bin")
139
139
140
140
:param obj: Generated object to serialize.
141
+ :param call_initialize_offsets: True to call initialize_offsets() method on generated object.
141
142
:param filename: File to write.
142
143
:raises PythonRuntimeException: Throws in case of any error during serialization.
143
144
"""
144
145
145
- writer = BitStreamWriter ()
146
- obj .initialize_offsets (writer .bitposition )
147
- obj .write (writer )
146
+ writer = _serialize (obj , call_initialize_offsets )
148
147
writer .to_file (filename )
149
148
150
149
def deserialize_from_file (obj_class : typing .Type [typing .Any ], filename : str , * args ) -> typing .Any :
@@ -171,3 +170,11 @@ def deserialize_from_file(obj_class: typing.Type[typing.Any], filename: str, *ar
171
170
reader = BitStreamReader .from_file (filename )
172
171
173
172
return obj_class .from_reader (reader , * args )
173
+
174
+ def _serialize (obj : typing .Any , call_initialize_offsets : bool ) -> BitStreamWriter :
175
+ writer = BitStreamWriter ()
176
+ if call_initialize_offsets :
177
+ obj .initialize_offsets (writer .bitposition )
178
+ obj .write (writer )
179
+
180
+ return writer
0 commit comments