Implement write for Boolean, ByteArray and String
This commit is contained in:
parent
1f3cafd8b3
commit
98bcd88cb4
@ -82,17 +82,37 @@ class CslaBinaryWriter:
|
|||||||
|
|
||||||
def write_object(self, value):
|
def write_object(self, value):
|
||||||
# CslaBinaryWriter.Write(...)
|
# CslaBinaryWriter.Write(...)
|
||||||
raise NotImplementedError('Writing objects of dynamic type is not yet implemented')
|
if isinstance(value, bool):
|
||||||
|
return self.write_object_bool(value)
|
||||||
|
|
||||||
|
if isinstance(value, bytes):
|
||||||
|
return self.write_object_bytearray(value)
|
||||||
|
|
||||||
|
if isinstance(value, str):
|
||||||
|
return self.write_object_string(value)
|
||||||
|
|
||||||
|
raise NotImplementedError('CslaBinaryWriter.Write not implemented for type {}'.format(type(value).__name__))
|
||||||
|
|
||||||
def write_object_bool(self, value):
|
def write_object_bool(self, value):
|
||||||
# CslaBinaryWriter.Write(bool)
|
# CslaBinaryWriter.Write(bool)
|
||||||
self.stream.write(bytes([CslaKnownTypes.Boolean.value, 1 if value else 0]))
|
self.stream.write(bytes([CslaKnownTypes.Boolean.value, 1 if value else 0]))
|
||||||
|
|
||||||
|
def write_object_bytearray(self, value):
|
||||||
|
# CslaBinaryWriter.Write(byte[])
|
||||||
|
self.stream.write(bytes([CslaKnownTypes.ByteArray.value]))
|
||||||
|
self.write_int32(len(value))
|
||||||
|
self.stream.write(value)
|
||||||
|
|
||||||
def write_object_int32(self, value):
|
def write_object_int32(self, value):
|
||||||
# CslaBinaryWriter.Write(int)
|
# CslaBinaryWriter.Write(int)
|
||||||
self.stream.write(bytes([CslaKnownTypes.Int32.value]))
|
self.stream.write(bytes([CslaKnownTypes.Int32.value]))
|
||||||
self.write_int32(value)
|
self.write_int32(value)
|
||||||
|
|
||||||
|
def write_object_string(self, value):
|
||||||
|
# CslaBinaryWriter.Write(string)
|
||||||
|
self.stream.write(bytes([CslaKnownTypes.String.value]))
|
||||||
|
self.write_string(value)
|
||||||
|
|
||||||
def write_object_system_string(self, value):
|
def write_object_system_string(self, value):
|
||||||
# CslaBinaryWriter.WriteSystemString
|
# CslaBinaryWriter.WriteSystemString
|
||||||
if value in self.keywords_dictionary:
|
if value in self.keywords_dictionary:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user