-- -- 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_Aliases_Loader is ---------- -- Load -- ---------- procedure Load (UCD_Root : Wide_Wide_String) is Loader : UCD.Data_File_Loaders.File_Loader; begin Loader.Open (UCD_Root, "PropertyAliases.txt"); while not Loader.End_Of_File loop declare P : constant Properties.Property_Access := new Properties.Property; begin P.Names.Append (To_Unbounded_Wide_Wide_String (Loader.Get_Field (0))); -- Second field is a long name of the property and may be the same -- as short name of the property, thus ignore it in such cases. declare Name : constant Unbounded_Wide_Wide_String := To_Unbounded_Wide_Wide_String (Loader.Get_Field (1)); begin if Name /= P.Names.First_Element then P.Names.Append (Name); end if; end; for J in 2 .. Data_File_Loaders.Field_Index'Last loop if Loader.Has_Field (J) then P.Names.Append (To_Unbounded_Wide_Wide_String (Loader.Get_Field (J))); end if; end loop; -- Compute some properties of the property. if P.Names.First_Element = "ccc" then P.Is_Canonical_Combining_Class := True; end if; -- Register property and its names. Properties.All_Properties.Append (P); for Name of P.Names loop Properties.Name_To_Property.Insert (Name, P); end loop; Loader.Skip_Line; end; end loop; end Load; end UCD.Property_Aliases_Loader;