Skip to content

Commit dd22219

Browse files
author
Simca
committed
Update Options extension with proper bitmask generator
1 parent 6aa1193 commit dd22219

File tree

1 file changed

+10
-3
lines changed
  • src/openstack_cli/modules/apputils/config/ext

1 file changed

+10
-3
lines changed

src/openstack_cli/modules/apputils/config/ext/options.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,19 @@ def __save_value(self):
6565
)
6666

6767
def __gen_bitmask(self, width: int) -> int:
68-
return (width << 1) - 1
68+
if width == 1:
69+
return 1
70+
71+
n = 1
72+
for _ in range(1, width + 1):
73+
n *= 2
74+
75+
return n - 1
6976

7077
def _get_bit(self, _bitfield: int, n: int) -> bool:
7178
return (_bitfield >> n) & self.__bitmask == 1
7279

73-
def _set_bit(self, _bitfield: int, n: int, v:bool) -> int:
80+
def _set_bit(self, _bitfield: int, n: int, v: bool) -> int:
7481
value = 1 if v else 0
7582
return _bitfield | (value << n)
7683

@@ -84,5 +91,5 @@ def set(self, prop: Enum, v: bool):
8491
if not self.__loaded:
8592
self.__load_value()
8693

87-
self.__bitfield = self._set_bit(self.__bitmask, int(prop.value), 1 if v else 0)
94+
self.__bitfield = self._set_bit(self.__bitfield, int(prop.value), v)
8895
self.__save_value()

0 commit comments

Comments
 (0)