with Interfaces.C.Strings; use Interfaces.C.Strings;
with System;
with Liblktlang.Default_Provider; use Liblktlang.Default_Provider;
package body Liblktlang.Implementation.C.Extensions is
---------------------------------
-- lkt_create_default_provider --
---------------------------------
function lkt_create_default_provider
(Directories : System.Address) return lkt_unit_provider
is
Result : Internal_Unit_Provider_Access;
begin
Clear_Last_Exception;
declare
Ada_Dirs : String_Vectors.Vector;
C_Dirs : constant array (Positive) of chars_ptr
with Import, Address => Directories;
begin
for C_Dirname of C_Dirs loop
exit when C_Dirname = Null_Ptr;
Ada_Dirs.Append (US.To_Unbounded_String (Value (C_Dirname)));
end loop;
Result := Create_From_Dirs (Ada_Dirs);
end;
return Wrap_Private_Provider (Result);
exception
when Exc : others =>
Set_Last_Exception (Exc);
return lkt_unit_provider (System.Null_Address);
end lkt_create_default_provider;
end Liblktlang.Implementation.C.Extensions;