__all__ = [ 'ODTStruct', ] import struct from typing import final, Optional from ..enums import ODTCf, ODTPersist1, ODTPersist2 @final class ODTStruct: def __init__(self, data: Optional[bytes] = None): if data: values = struct.unpack('<HH', data[:8]) self.__cf = ODTCf(values[0]) self.__persist1 = ODTPersist1(values[1]) if len(data) >= 6: self.__persist2 = ODTPersist2(struct.unpack('<H', data[4:6])[0]) else: self.__persist2 = ODTPersist2.NONE else: self.__cf = ODTCf.UNSPECIFIED self.__persist1 = ODTPersist1.NONE self.__persist2 = ODTPersist2.NONE def __bytes__(self) -> bytes: return self.toBytes() def toBytes(self) -> bytes: return struct.pack('<HHH', self.__cf, self.__persist1, self.__persist2) @property def cf(self) -> ODTCf: """ An enum value that specifies the format this OLE object uses to transmit data to the host application. """ return self.__cf @cf.setter def cf(self, value: ODTCf) -> None: if not isinstance(value, ODTCf): raise TypeError(':property cf: MUST be of type ODTCf.') self.__cf = value @property def odtPersist1(self) -> ODTPersist1: """ Flags that specify information about the OLE object. """ return self.__persist1 @odtPersist1.setter def odtPersist1(self, value: ODTPersist1) -> None: if not isinstance(value, ODTPersist1): raise TypeError(':property odtPersist1: MUST be of type ODTPersist1.') self.__persist1 = value @property def odtPersist2(self) -> ODTPersist2: """ Flags that specify additional information about the OLE object. """ return self.__persist2 @odtPersist2.setter def odtPersist2(self, value: ODTPersist2) -> None: if not isinstance(value, ODTPersist2): raise TypeError(':property odtPersist2: MUST be of type ODTPersist2.') self.__persist2 = value
Memory