from .DefaultInterface import DefaultInterface
[docs]class IntegerInterface(DefaultInterface):
""" Interface that facilitates bit manipulation in an integer """
def __init__(self, value):
"If value is none, we instead use 0"
super().__init__(value or 0) # integer: benytter 0 i stedet for None
[docs] def bits(self, *offsets):
"Returns True or False List"
return [self.bit(offset) for offset in offsets]
[docs] def bit(self, offset):
"returns True or False"
return self.value & (1 << offset) > 0
[docs] def setbit(self, offset, bit=True):
"""Changing bit in value to True. Can also change to False if bit = False
Does not return any value."""
if bit:
self.value |= 1 << offset
else:
self.clearbit(offset)
[docs] def setbits(self, *offsets, bit=True):
""" Changing bits in value to True. Can also change to False if bit = False
Does not return any value."""
if bit:
for offset in offsets:
self.value |= 1 << offset
else:
self.clearbits(*offsets)
[docs] def clearbit(self, offset):
"Changes bit in value to False. No return value."
self.value &= ~(1 << offset)
[docs] def clearbits(self, *offsets):
"Changes bits in value to False. No return value."
for offset in offsets:
self.value &= ~(1 << offset)