def load(cls, reader: Reader) -> bytes: if cls.FIX_SIZE: size = cls.SIZE else: size = load_uvarint(reader) elem = bytearray(size) reader.readinto(elem) return elem
def load(cls, reader: Reader, elem_type: XmrType[T] | None = None) -> list[T]: if elem_type is None: elem_type = cls.ELEM_TYPE if cls.FIX_SIZE: size = cls.SIZE else: size = load_uvarint(reader) elems = [] for _ in range(size): elem = elem_type.load(reader) elems.append(elem) return elems
def test_varint(self): """ Var int :return: """ # fmt: off test_nums = [ 0, 1, 12, 44, 32, 63, 64, 127, 128, 255, 256, 1023, 1024, 8191, 8192, 2**16, 2**16 - 1, 2**32, 2**32 - 1, 2**64, 2**64 - 1, 2**72 - 1, 2**112 ] # fmt: on for test_num in test_nums: writer = MemoryReaderWriter() dump_uvarint(writer, test_num) test_deser = load_uvarint(MemoryReaderWriter(writer.get_buffer())) self.assertEqual(test_num, test_deser)
def load(reader: Reader) -> str: ivalue = load_uvarint(reader) fvalue = bytearray(ivalue) reader.readinto(fvalue) return str(fvalue)
def load(reader: Reader) -> int: return load_uvarint(reader)