--
-- Copyright (C) 2021, AdaCore
--
-- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
--
with Ada.Strings.Wide_Wide_Unbounded; use Ada.Strings.Wide_Wide_Unbounded;
with UCD.Data_File_Loaders;
with UCD.Properties;
package body UCD.Property_Value_Aliases_Loader is
----------
-- Load --
----------
procedure Load (UCD_Root : Wide_Wide_String) is
Loader : UCD.Data_File_Loaders.File_Loader;
begin
Loader.Open (UCD_Root, "PropertyValueAliases.txt");
while not Loader.End_Of_File loop
-- XXX @missing annotation is not processed!
declare
P : constant Properties.Property_Access :=
Properties.Name_To_Property
(To_Unbounded_Wide_Wide_String (Loader.Get_Field (0)));
V : constant Properties.Property_Value_Access :=
new Properties.Property_Value;
F : Data_File_Loaders.Field_Index := 1;
begin
if P.Is_Canonical_Combining_Class then
-- Second field for 'ccc' property is numeric value.
V.Canonical_Combining_Class_Value :=
Properties.Canonical_Combinig_Class'Wide_Wide_Value
(Loader.Get_Field (1));
F := 2;
end if;
for J in F .. Data_File_Loaders.Field_Index'Last loop
if Loader.Has_Field (J) then
declare
Name : constant Unbounded_Wide_Wide_String :=
To_Unbounded_Wide_Wide_String (Loader.Get_Field (J));
begin
-- Short name and long name may be the same, ignore
-- duplicates.
if V.Names.Is_Empty
or else Name /= V.Names.First_Element
then
V.Names.Append (Name);
end if;
end;
end if;
end loop;
-- Register value and its names
P.All_Values.Append (V);
for Name of V.Names loop
P.Name_To_Value.Insert (Name, V);
end loop;
Loader.Skip_Line;
end;
end loop;
end Load;
end UCD.Property_Value_Aliases_Loader;