Overview
Comment: | tools/smaz: work around a bugbox in GNAT 6.2 |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d23d8fc3b61668e197217cf1ad94c81d |
User & Date: | nat on 2016-12-11 21:36:56 |
Other Links: | manifest | tags |
Context
2016-12-12
| ||
22:18 | tools/smaz: fix the validation of retired dictionaries check-in: c291af061e user: nat tags: trunk | |
2016-12-11
| ||
21:36 | tools/smaz: work around a bugbox in GNAT 6.2 check-in: d23d8fc3b6 user: nat tags: trunk | |
2016-12-10
| ||
22:30 | tools/smaz: instantiate the old code to make it available check-in: 53a6d91b09 user: nat tags: trunk | |
Changes
Modified tools/smaz.adb from [78257fe6d3] to [9042103961].
︙ | ︙ | |||
129 130 131 132 133 134 135 136 137 138 139 140 141 142 | overriding procedure Argument (Handler : in out Callback; Argument : in String) is null; procedure Build_Perfect_Hash (Word_List : in Natools.Smaz.Tools.String_Lists.List; Package_Name : in String); -- Adapter between Smaz_256 generator and retired Smaz types procedure Convert (Input : in Natools.Smaz_Tools.String_Lists.List; | > > > > > > | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | overriding procedure Argument (Handler : in out Callback; Argument : in String) is null; function Activate_Dictionary (Dict : in Natools.Smaz_256.Dictionary) return Natools.Smaz_256.Dictionary; function Activate_Dictionary (Dict : in Natools.Smaz.Dictionary) return Natools.Smaz.Dictionary; -- Update Dictionary.Hash so that it can be actually used procedure Build_Perfect_Hash (Word_List : in Natools.Smaz.Tools.String_Lists.List; Package_Name : in String); -- Adapter between Smaz_256 generator and retired Smaz types procedure Convert (Input : in Natools.Smaz_Tools.String_Lists.List; |
︙ | ︙ | |||
165 166 167 168 169 170 171 | -- print the given dictionary in the given file procedure Print_Help (Opt : in Getopt.Configuration; Output : in Ada.Text_IO.File_Type); -- Print the help text to the given file | < < < < > > > | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | -- print the given dictionary in the given file procedure Print_Help (Opt : in Getopt.Configuration; Output : in Ada.Text_IO.File_Type); -- Print the help text to the given file generic type Dictionary (<>) is private; type Dictionary_Entry is (<>); type Methods is (<>); type Score_Value is range <>; type String_Count is range <>; type Word_Counter is private; type Dictionary_Counts is array (Dictionary_Entry) of String_Count; with package String_Lists is new Ada.Containers.Indefinite_Doubly_Linked_Lists (String); with function Activate_Dictionary (Dict : in Dictionary) return Dictionary is <>; with procedure Add_Substrings (Counter : in out Word_Counter; Phrase : in String; Min_Size : in Positive; Max_Size : in Positive); |
︙ | ︙ | |||
274 275 276 277 278 279 280 | Max_Pending_Count : in Ada.Containers.Count_Type); with function To_Dictionary (List : in String_Lists.List; Variable_Length_Verbatim : in Boolean) return Dictionary; | < < | 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | Max_Pending_Count : in Ada.Containers.Count_Type); with function To_Dictionary (List : in String_Lists.List; Variable_Length_Verbatim : in Boolean) return Dictionary; with function Worst_Element (Dict : in Dictionary; Counts : in Dictionary_Counts; Method : in Methods) return Dictionary_Entry; package Dictionary_Subprograms is |
︙ | ︙ | |||
365 366 367 368 369 370 371 | procedure Evaluate_Dictionary (Job_Count : in Natural; Dict : in Dictionary; Corpus : in String_Lists.List; Compressed_Size : out Ada.Streams.Stream_Element_Count; Counts : out Dictionary_Counts) is | | < < | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 | procedure Evaluate_Dictionary (Job_Count : in Natural; Dict : in Dictionary; Corpus : in String_Lists.List; Compressed_Size : out Ada.Streams.Stream_Element_Count; Counts : out Dictionary_Counts) is Actual_Dict : constant Dictionary := Activate_Dictionary (Dict); begin if Job_Count > 0 then Parallel_Evaluate_Dictionary (Job_Count, Actual_Dict, Corpus, Compressed_Size, Counts); else Evaluate_Dictionary (Actual_Dict, Corpus, Compressed_Size, Counts); end if; |
︙ | ︙ | |||
604 605 606 607 608 609 610 | procedure Process (Handler : in Callback'Class; Word_List : in String_Lists.List; Data_List : in String_Lists.List; Method : in Methods) is | > | < < | 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | procedure Process (Handler : in Callback'Class; Word_List : in String_Lists.List; Data_List : in String_Lists.List; Method : in Methods) is Dict : constant Dictionary := Activate_Dictionary (To_Dictionary (Handler, Word_List, Method)); Sx_Output : Natools.S_Expressions.Printers.Canonical (Ada.Text_IO.Text_Streams.Stream (Ada.Text_IO.Current_Output)); Ada_Dictionary : constant String := Ada.Strings.Unbounded.To_String (Handler.Ada_Dictionary); Hash_Package : constant String := Ada.Strings.Unbounded.To_String (Handler.Hash_Package); begin if Ada_Dictionary'Length > 0 then Print_Dictionary (Ada_Dictionary, Dict, Hash_Package); end if; if Hash_Package'Length > 0 then Build_Perfect_Hash (Word_List, Hash_Package); end if; |
︙ | ︙ | |||
1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 | Handler.Algorithm := Algorithms.Base_256; when Options.Base_256_Retired => Handler.Algorithm := Algorithms.Base_256_Retired; end case; end Option; procedure Build_Perfect_Hash (Word_List : in Natools.Smaz.Tools.String_Lists.List; Package_Name : in String) is Other_Word_List : Natools.Smaz_Tools.String_Lists.List; begin | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 | Handler.Algorithm := Algorithms.Base_256; when Options.Base_256_Retired => Handler.Algorithm := Algorithms.Base_256_Retired; end case; end Option; function Activate_Dictionary (Dict : in Natools.Smaz_256.Dictionary) return Natools.Smaz_256.Dictionary is Result : Natools.Smaz_256.Dictionary := Dict; begin Natools.Smaz_Tools.Set_Dictionary_For_Trie_Search (Tools_256.To_String_List (Result)); Result.Hash := Natools.Smaz_Tools.Trie_Search'Access; for I in Result.Offsets'Range loop if Natools.Smaz_Tools.Trie_Search (Natools.Smaz_256.Dict_Entry (Result, I)) /= Natural (I) then Ada.Text_IO.Put_Line (Ada.Text_IO.Current_Error, "Fail at" & Ada.Streams.Stream_Element'Image (I) & " -> " & Natools.String_Escapes.C_Escape_Hex (Natools.Smaz_256.Dict_Entry (Result, I), True) & " ->" & Natural'Image (Natools.Smaz_Tools.Trie_Search (Natools.Smaz_256.Dict_Entry (Result, I)))); end if; end loop; return Result; end Activate_Dictionary; function Activate_Dictionary (Dict : in Natools.Smaz.Dictionary) return Natools.Smaz.Dictionary is Result : Natools.Smaz.Dictionary := Dict; begin Natools.Smaz.Tools.Set_Dictionary_For_Trie_Search (Result); Result.Hash := Natools.Smaz.Tools.Trie_Search'Access; for I in Result.Offsets'Range loop if Natools.Smaz_Tools.Trie_Search (Natools.Smaz.Dict_Entry (Result, I)) /= Natural (I) then Ada.Text_IO.Put_Line (Ada.Text_IO.Current_Error, "Fail at" & Ada.Streams.Stream_Element'Image (I) & " -> " & Natools.String_Escapes.C_Escape_Hex (Natools.Smaz.Dict_Entry (Result, I), True) & " ->" & Natural'Image (Natools.Smaz.Tools.Trie_Search (Natools.Smaz.Dict_Entry (Result, I)))); end if; end loop; return Result; end Activate_Dictionary; procedure Build_Perfect_Hash (Word_List : in Natools.Smaz.Tools.String_Lists.List; Package_Name : in String) is Other_Word_List : Natools.Smaz_Tools.String_Lists.List; begin |
︙ | ︙ | |||
1366 1367 1368 1369 1370 1371 1372 | New_Line (Output); Put_Line (Output, Indent & Indent & "Use retired base-256 implementation"); end case; end loop; end Print_Help; | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 | New_Line (Output); Put_Line (Output, Indent & Indent & "Use retired base-256 implementation"); end case; end loop; end Print_Help; Opt_Config : constant Getopt.Configuration := Getopt_Config; Handler : Callback; Input_List, Input_Data : Natools.Smaz_Tools.String_Lists.List; begin Process_Command_Line : begin |
︙ | ︙ |