Source code for spinnman.data.little_endian_data_reader_byte_reader

from spinnman.data.abstract_byte_reader import AbstractByteReader


[docs]class LittleEndianDataReaderByteReader(AbstractByteReader): """ A byte reader that reads from a data reader using little endian\ notation """
[docs] def is_at_end(self): """ required from abstract byte reader :return: """ raise NotImplementedError
def __init__(self, data_reader): """ :param data_reader: The data reader to read from :type data_reader: :py:class:`spinnman.data.abstract_data_reader.AbstractDataReader` """ self._data_reader = data_reader
[docs] def read_byte(self): """ See :py:meth:`spinnman.data.abstract_byte_reader.AbstractByteReader.read_byte` """ data = self._data_reader.read(1) if len(data) == 0: raise EOFError("Not enough data to read a byte") return data[0]
[docs] def read_bytes(self, size=None): """ See :py:meth:`spinnman.data.abstract_byte_reader.AbstractByteReader.read_bytes` """ if size is None: return bytearray(self._data_reader.readall()) data = bytearray() bytes_read = None while bytes_read != 0 and len(data) < size: new_data = self._data_reader.read(size - len(data)) bytes_read = len(new_data) data.extend(new_data) if len(data) < size: raise EOFError("Not enough bytes to read {} bytes".format(size)) return data
[docs] def read_short(self): """ See :py:meth:`spinnman.data.abstract_byte_reader.AbstractByteReader.read_short` """ try: value = self.read_byte() | (self.read_byte() << 8) return value except EOFError: raise EOFError("Not enough bytes to read a short")
[docs] def read_int(self): """ See :py:meth:`spinnman.data.abstract_byte_reader.AbstractByteReader.read_int` """ try: value = (self.read_byte() | (self.read_byte() << 8) | (self.read_byte() << 16) | (self.read_byte() << 24)) return value except EOFError: raise EOFError("Not enough bytes to read a short")
[docs] def read_long(self): """ See :py:meth:`spinnman.data.abstract_byte_reader.AbstractByteReader.read_long` """ try: value = (self.read_byte() | (self.read_byte() << 8) | (self.read_byte() << 16) | (self.read_byte() << 24) | (self.read_byte() << 32) | (self.read_byte() << 40) | (self.read_byte() << 48) | (self.read_byte() << 56)) return value except EOFError: raise EOFError("Not enough bytes to read a short")