Odziedziczyłem ten kod i nie mogę rozgryźć, co robi. Definicja wygląda dość proste:Tablica booleanów tworzy monstrualność
result : BOOLEAN ;
LOOKUP_TABLE : array
(BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN,
BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN) of
BOOLEAN := (others => (others => (others => (others => (others => (others => (others => (others =>
(others => (others => (others => (others => (others => (others => (others => (others =>
TRUE))))))))))))))));
W organizmie jest ona wykorzystywana w sposób następujący:
result := LOOKUP_TABLE(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE);
podczas zrzucania lookup_table w GDB tworzy linię o długości ponad 500 tysięcy znaków, pierwszy mały trochę wygląda następująco:
$1 = ((((((((((((((((true, true), (true, true)), ((true, true), (true, true))), (((true, true), (true, ...
Początkowo moje pytanie miało być: w jaki sposób 16-logiczna tablica być zmniejszona do jednego bool „wynik” ?, ale po patrząc na to w GDB, muszę zapytać "Co to za rzecz???"
PS: Po zakończeniu rozmowy w organizmie, LOOKUP_TABLE wciąż 500000 znaków, gdzie każde pole logiczna jest prawdą ...
Czy próbowałeś zapytać faceta, który napisał ten fragment kodu? – Sven
co za marnowanie zasobów! zastąpić pojedynczą tablicą 64K boili – CapelliC
Nie jest to koniecznie strata. Jeśli tablica jest spakowana, każda wartość logiczna może zająć 1 bit. – egilhh