rename labels to symbols

This commit is contained in:
2026-07-08 10:55:36 +03:00
parent 5fc2dcde2a
commit da5cecc63a
+12 -12
View File
@@ -12,11 +12,11 @@ class Set:
Attributes: Attributes:
cnt (int): The number of elements in the set. cnt (int): The number of elements in the set.
labels (List[Tuple[str, int]]): A list of tuples, where each tuple contains a string and its corresponding hash value. symbols (List[Tuple[str, int]]): A list of tuples, where each tuple contains a string and its corresponding hash value.
""" """
cnt: int cnt: int
labels: List[Tuple[str, int]] # List of tuples (string, hash value) symbols: List[Tuple[str, int]] # List of tuples (string, hash value)
def check_bpp(bpp: int) -> bool: def check_bpp(bpp: int) -> bool:
@@ -313,20 +313,20 @@ def rpmsetcmp(str1: str, str2: str) -> int:
def set_new() -> Set: def set_new() -> Set:
"""Create a new Set instance with cnt initialized to 0 and an empty list of labels.""" """Create a new Set instance with cnt initialized to 0 and an empty list of symbols."""
return Set(cnt=0, labels=[]) return Set(cnt=0, symbols=[])
def set_add(set: Set, label: str) -> None: def set_add(set: Set, label: str) -> None:
"""Add a label to the set.""" """Add a label to the set."""
hash_value = 0 hash_value = 0
set.labels.append((label, hash_value)) set.symbols.append((label, hash_value))
set.cnt += 1 set.cnt += 1
def set_free(set: Set) -> None: def set_free(set: Set) -> None:
"""Free the resources associated with the set.""" """Free the resources associated with the set."""
set.labels.clear() set.symbols.clear()
set.cnt = 0 set.cnt = 0
@@ -348,20 +348,20 @@ def set_fini(set: Set, bpp: int) -> str | None:
# calculate hash values for each label and store them in the set # calculate hash values for each label and store them in the set
for i in range(set.cnt): for i in range(set.cnt):
label, _ = set.labels[i] label, _ = set.symbols[i]
computed_hash = hash(label) & mask computed_hash = hash(label) & mask
set.labels[i] = (label, computed_hash) set.symbols[i] = (label, computed_hash)
set.labels.sort(key=lambda x: x[1]) # Sort by hash value set.symbols.sort(key=lambda x: x[1]) # Sort by hash value
# warn on hash collisions # warn on hash collisions
for i in range(1, set.cnt): for i in range(1, set.cnt):
if set.labels[i][1] == set.labels[i - 1][1]: if set.symbols[i][1] == set.symbols[i - 1][1]:
print( print(
f"Warning: Hash collision detected for labels '{set.labels[i][0]}' and '{set.labels[i - 1][0]}'" f"Warning: Hash collision detected for symbols '{set.symbols[i][0]}' and '{set.symbols[i - 1][0]}'"
) )
hash_values = [label_hash for _, label_hash in set.labels] hash_values = [label_hash for _, label_hash in set.symbols]
encoded_string = encode_set(hash_values, bpp) encoded_string = encode_set(hash_values, bpp)