コード例 #1
0
    def testReadVarSize(self):
        # overflow, 2^32 - 1 is too much (b'\x83\xFF\xFF\xFF\xFF') is the maximum)
        reader = BitStreamReader(b'\x87\xFF\xFF\xFF\xFF')
        with self.assertRaises(PythonRuntimeException):
            reader.readVarSize()

        # overflow, 2^36 - 1 is too much (b'\x83\xFF\xFF\xFF\xFF') is the maximum)
        reader = BitStreamReader(b'\xFF\xFF\xFF\xFF\xFF')
        with self.assertRaises(PythonRuntimeException):
            reader.readVarSize()
コード例 #2
0
ファイル: array.py プロジェクト: Qian9/zserio
    def read(self, reader: BitStreamReader, size: int = 0) -> None:
        """
        Reads array from the bit stream.

        :param reader: Bit stream from which to read.
        :param size: Number of elements to read or None in case of implicit or auto arrays.

        :raises PythonRuntimeException: If the array does not have elements with constant bit size.
        """

        self._rawArray.clear()

        if self._isImplicit:
            if not self._arrayTraits.HAS_BITSIZEOF_CONSTANT:
                raise PythonRuntimeException("Array: Implicit array elements must have constant bit size!")

            elementSize = self._arrayTraits.bitSizeOf()
            remainingBits = reader.getBufferBitSize() - reader.getBitPosition()
            readSize = remainingBits // elementSize
            for index in range(readSize):
                self._rawArray.append(self._arrayTraits.read(reader, index))
        else:
            if self._isAuto:
                readSize = reader.readVarSize()
            else:
                readSize = size

            for index in range(readSize):
                if self._checkOffsetMethod is not None:
                    reader.alignTo(8)
                    self._checkOffsetMethod(index, reader.getBitPosition())
                self._rawArray.append(self._arrayTraits.read(reader, index))
コード例 #3
0
ファイル: array.py プロジェクト: Qian9/zserio
    def read(reader: BitStreamReader, _index: int) -> int:
        """
        Reads Zserio varsize type from the bit stream.

        :param reader: Bit stream from which to read.
        :param _index: Not used.
        """

        return reader.readVarSize()