Files
alire-index-community/src/alire-containers.adb
T
2018-05-11 11:54:12 +02:00

88 lines
2.2 KiB
Ada

package body Alire.Containers is
------------
-- Insert --
------------
procedure Insert (Dst : in out Release_Map; Src : Release_Map) is
begin
for E of Src loop
Dst.Insert (E.Project, E);
end loop;
end Insert;
---------------
-- Inserting --
---------------
function Inserting (Dst : Release_Map; Src : Release_Map) return Release_Map is
begin
return Result : Release_Map := Dst do
for E of Src loop
Result.Insert (E.Project, E);
if E.Project /= E.Provides then
Result.Insert (E.Provides, E);
end if;
end loop;
end return;
end Inserting;
function Inserting (Dst : Release_Map; Src : Releases.Release) return Release_Map is
(Dst.Inserting (To_Map (Src)));
---------------
-- Excluding --
---------------
function Excluding (Map : Release_Map; Name : Alire.Project) return Release_Map is
begin
return Filtered : Release_Map := Map do
Filtered.Exclude (Name);
end return;
end Excluding;
---------------
-- Including --
---------------
function Including (Map : Release_Map; Release : Releases.Release) return Release_Map is
begin
return New_Map : Release_Map := Map do
New_Map.Include (Release.Project, Release);
end return;
end Including;
---------------------
-- To_Dependencies --
---------------------
function To_Dependencies (Map : Release_Map) return Conditional.Dependencies is
use Conditional.For_Dependencies;
use Project_Release_Maps;
begin
return Deps : Conditional.Dependencies do
for I in Map.Iterate loop
if Key (I) = Map (I).Provides then -- Avoid duplicates
Deps :=
Deps and
Conditional.New_Dependency
(Map (I).Project,
Semantic_Versioning.Exactly (Map (I).Version));
end if;
end loop;
end return;
end To_Dependencies;
------------
-- To_Map --
------------
function To_Map (R : Releases.Release) return Release_Map is
begin
return M : Release_Map do
M.Include (R.Project, R);
end return;
end To_Map;
end Alire.Containers;