From 06b049d2bfa14a2bcbcbdf6b9ff04108510d26c0 Mon Sep 17 00:00:00 2001 From: evan0greenup <44539531+evan0greenup@users.noreply.github.com> Date: Sun, 15 May 2022 00:30:06 +1000 Subject: [PATCH 1/2] add additional function for 0 Add method to support "0" related operation and make bitmap more symmetrical. --- src/bitmap.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bitmap.py b/src/bitmap.py index 6348805..f2d04ed 100755 --- a/src/bitmap.py +++ b/src/bitmap.py @@ -25,12 +25,13 @@ class BitMap(object): BITMASK = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80] BIT_CNT = [bin(i).count("1") for i in xrange(256)] - def __init__(self, maxnum=0): + def __init__(self, maxnum=0, v=False): """ Create a BitMap """ nbytes = (maxnum + 7) // 8 - self.bitmap = array.array('B', [0 for i in range(nbytes)]) + bit_value = 0xFF if v else 0x00 + self.bitmap = array.array('B', [bit_value for i in range(nbytes)]) def __del__(self): """ @@ -97,6 +98,12 @@ def nonzero(self): Get all non-zero bits """ return [i for i in xrange(self.size()) if self.test(i)] + + def zero(self): + """ + Get all zero bits + """ + return [i for i in xrange(self.size()) if not self.test(i)] def tostring(self): """ From 15fd664557e75830ebea9aa0e533e62a1a5c2725 Mon Sep 17 00:00:00 2001 From: evan0greenup <44539531+evan0greenup@users.noreply.github.com> Date: Sun, 15 May 2022 00:34:18 +1000 Subject: [PATCH 2/2] rename v -> preset make the variable name more meaningful. --- src/bitmap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bitmap.py b/src/bitmap.py index f2d04ed..be6ad51 100755 --- a/src/bitmap.py +++ b/src/bitmap.py @@ -25,12 +25,12 @@ class BitMap(object): BITMASK = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80] BIT_CNT = [bin(i).count("1") for i in xrange(256)] - def __init__(self, maxnum=0, v=False): + def __init__(self, maxnum=0, preset=False): """ Create a BitMap """ nbytes = (maxnum + 7) // 8 - bit_value = 0xFF if v else 0x00 + bit_value = 0xFF if preset else 0x00 self.bitmap = array.array('B', [bit_value for i in range(nbytes)]) def __del__(self):