(self, buffer, value)
| 556 | return type_id |
| 557 | |
| 558 | def write(self, buffer, value): |
| 559 | actual_type_id = self._array_type_id(value) |
| 560 | if actual_type_id != self.type_id: |
| 561 | raise TypeError(f"array.array typecode {value.typecode!r} maps to type id {actual_type_id}, expected {self.type_id}") |
| 562 | view = memoryview(value) |
| 563 | assert view.itemsize == self.itemsize |
| 564 | assert view.c_contiguous # TODO handle contiguous |
| 565 | nbytes = len(value) * self.itemsize |
| 566 | buffer.write_var_uint32(nbytes) |
| 567 | if is_little_endian or self.itemsize == 1: |
| 568 | buffer.write_buffer(value) |
| 569 | else: |
| 570 | # Swap bytes on big-endian machines for multi-byte types |
| 571 | swapped = array.array(self.typecode, value) |
| 572 | swapped.byteswap() |
| 573 | buffer.write_buffer(swapped) |
| 574 | |
| 575 | def read(self, buffer): |
| 576 | data = buffer.read_bytes_and_size() |
nothing calls this directly
no test coverage detected