mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-23 03:03:38 +00:00
e56303798c
Initial SickGear for Python 3.
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
"""
|
|
Bit sized classes:
|
|
- Bit: Single bit, value is False or True ;
|
|
- Bits: Integer with a size in bits ;
|
|
- RawBits: unknown content with a size in bits.
|
|
"""
|
|
|
|
from hachoir.field import Field
|
|
from hachoir.core import config
|
|
|
|
|
|
class RawBits(Field):
|
|
"""
|
|
Unknown content with a size in bits.
|
|
"""
|
|
static_size = staticmethod(lambda *args, **kw: args[1])
|
|
|
|
def __init__(self, parent, name, size, description=None):
|
|
"""
|
|
Constructor: see L{Field.__init__} for parameter description
|
|
"""
|
|
Field.__init__(self, parent, name, size, description)
|
|
|
|
def hasValue(self):
|
|
return True
|
|
|
|
def createValue(self):
|
|
return self._parent.stream.readBits(
|
|
self.absolute_address, self._size, self._parent.endian)
|
|
|
|
def createDisplay(self):
|
|
if self._size < config.max_bit_length:
|
|
return str(self.value)
|
|
else:
|
|
return ("<%s size=%u>" %
|
|
(self.__class__.__name__, self._size))
|
|
createRawDisplay = createDisplay
|
|
|
|
|
|
class Bits(RawBits):
|
|
"""
|
|
Positive integer with a size in bits
|
|
|
|
@see: L{Bit}
|
|
@see: L{RawBits}
|
|
"""
|
|
pass
|
|
|
|
|
|
class Bit(RawBits):
|
|
"""
|
|
Single bit: value can be False or True, and size is exactly one bit.
|
|
|
|
@see: L{Bits}
|
|
"""
|
|
static_size = 1
|
|
|
|
def __init__(self, parent, name, description=None):
|
|
"""
|
|
Constructor: see L{Field.__init__} for parameter description
|
|
"""
|
|
RawBits.__init__(self, parent, name, 1, description=description)
|
|
|
|
def createValue(self):
|
|
return 1 == self._parent.stream.readBits(
|
|
self.absolute_address, 1, self._parent.endian)
|
|
|
|
def createRawDisplay(self):
|
|
return str(int(self.value))
|