__all__ = [ 'SystemTime', ] from typing import Any, Optional from .. import constants class SystemTime: """ A SYSTEMTIME struct, as defined in [MS-DTYP]. """ def __init__(self, data: Optional[bytes] = None): data = data or (b'\x00' * 16) self.unpack(data) def __eq__(self, other: Any) -> bool: return isinstance(other, SystemTime) and bytes(self) == bytes(other) def __ne__(self, other: Any) -> bool: return not self.__eq__(other) def __bytes__(self) -> bytes: return self.toBytes() def toBytes(self) -> bytes: """ Packs the current data into bytes. """ return constants.st.ST_SYSTEMTIME.pack(self.__year, self.__month, self.__dayOfWeek, self.__day, self.__hour, self.__minute, self.__second, self.__milliseconds) def unpack(self, data: bytes) -> None: """ Fills out the fields of this instance by unpacking the bytes. """ unpacked = constants.st.ST_SYSTEMTIME.unpack(data) self.__year = unpacked[0] self.__month = unpacked[1] self.__dayOfWeek = unpacked[2] self.__day = unpacked[3] self.__hour = unpacked[4] self.__minute = unpacked[5] self.__second = unpacked[6] self.__milliseconds = unpacked[7] @property def day(self) -> int: return self.__day @day.setter def day(self, value: int) -> None: if value < 0: raise ValueError('Day must be positive.') if value > 0xFFFF: raise ValueError('Day cannot be greater than 0xFFFF.') self.__day = value @property def dayOfWeek(self) -> int: return self.__dayOfWeek @dayOfWeek.setter def dayOfWeek(self, value: int) -> None: if value < 0: raise ValueError('Day of week must be positive.') if value > 0xFFFF: raise ValueError('Day of week cannot be greater than 0xFFFF.') self.__dayOfWeek = value @property def hour(self) -> int: return self.__hour @hour.setter def hour(self, value: int) -> None: if value < 0: raise ValueError('Hour must be positive.') if value > 0xFFFF: raise ValueError('Hour cannot be greater than 0xFFFF.') self.__hour = value @property def milliseconds(self) -> int: return self.__milliseconds @milliseconds.setter def milliseconds(self, value: int) -> None: if value < 0: raise ValueError('Milliseconds must be positive.') if value > 0xFFFF: raise ValueError('Milliseconds cannot be greater than 0xFFFF.') self.__milliseconds = value @property def minute(self) -> int: return self.__minute @minute.setter def minute(self, value: int) -> None: if value < 0: raise ValueError('Minute must be positive.') if value > 0xFFFF: raise ValueError('Minute cannot be greater than 0xFFFF.') self.__minute = value @property def month(self) -> int: return self.__month @month.setter def month(self, value: int) -> None: if value < 0: raise ValueError('Month must be positive.') if value > 0xFFFF: raise ValueError('Month cannot be greater than 0xFFFF.') self.__month = value @property def second(self) -> int: return self.__second @second.setter def second(self, value: int) -> None: if value < 0: raise ValueError('Second must be positive.') if value > 0xFFFF: raise ValueError('Second cannot be greater than 0xFFFF.') self.__second = value @property def year(self) -> int: return self.__year @year.setter def year(self, value: int) -> None: if value < 0: raise ValueError('Year must be positive.') if value > 0xFFFF: raise ValueError('Year cannot be greater than 0xFFFF.') self.__year = value
Memory