Implement write for Boolean, ByteArray and String

This commit is contained in:
RunasSudo 2025-04-21 17:35:27 +10:00
parent 1f3cafd8b3
commit 98bcd88cb4
Signed by: RunasSudo
GPG Key ID: 7234E476BF21C61A

View File

@ -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: