Skip to content

Commit

Permalink
M agpl-cr-tasks-insertions.adb
Browse files Browse the repository at this point in the history
M    agpl-containers-bulk-utils.ads
M    agpl-cr-assignment.adb
M    agpl-cr-assignment.ads
  • Loading branch information
mosteo committed Apr 28, 2007
1 parent 095a455 commit 7463513
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 1 deletion.
2 changes: 2 additions & 0 deletions agpl-containers-bulk-utils.ads
Expand Up @@ -34,7 +34,9 @@ package Agpl.Containers.Bulk.Utils is
procedure Concatenate (Dest : in out Lists.List; Src : in Lists.List);

function To_List (Src : in Vectors.Vector) return Lists.List;
function "+" (Src : in Vectors.Vector) return Lists.List renames To_List;

function To_Vector (Src : in Lists.List) return Vectors.Vector;
function "+" (Src : in Lists.List) return Vectors.Vector renames To_Vector;

end Agpl.Containers.Bulk.Utils;
16 changes: 16 additions & 0 deletions agpl-cr-assignment.adb
Expand Up @@ -149,6 +149,22 @@ package body Agpl.Cr.Assignment is
This.Agents.Include (Agent.Get_Name, Agent);
end Set_Agent;

----------------
-- Set_Agents --
----------------

procedure Set_Agents (This : in out Object;
Agents : Cr.Agent.Containers.Lists.List)
is
use Cr.Agent.Containers.Lists;
procedure Add (I : Cursor) is
begin
This.Set_Agent (Element (I));
end Add;
begin
Agents.Iterate (Add'Access);
end Set_Agents;

-----------------
-- Freeze_Plan --
-----------------
Expand Down
3 changes: 3 additions & 0 deletions agpl-cr-assignment.ads
Expand Up @@ -65,6 +65,9 @@ package Agpl.Cr.Assignment is
procedure Set_Agent (This : in out Object; Agent : in Cr.Agent.Object'Class);
-- Add or replace an agent and its tasks

procedure Set_Agents (This : in out Object;
Agents : Cr.Agent.Containers.Lists.List);

function Get_Agents (This : in Object)
return Agent.Containers.Lists.List;
-- Get all agents with its tasks.
Expand Down
14 changes: 13 additions & 1 deletion agpl-cr-tasks-insertions.adb
Expand Up @@ -14,7 +14,9 @@ package body Agpl.Cr.Tasks.Insertions is
package Task_Lists renames Htn.Tasks.Containers.Lists;

package Candidate_Vectors is
new Dynamic_Vector (Cr.Agent.Handle.Object);
new Dynamic_Vector (Cr.Agent.Handle.Object);

use type Htn.Tasks.Task_Id;

---------------
-- Before_Id --
Expand Down Expand Up @@ -601,7 +603,13 @@ package body Agpl.Cr.Tasks.Insertions is
New_Agent : Cr.Agent.Handle.Object;
Agent_Task : Htn.Tasks.Task_Id;
begin
if Natural (Tasks.Length) = 0 then
Inserted := Htn.Tasks.No_Task;
return;
end if;

Agents.Iterate (Check'Access);

if Agent_Vectors.Has_Element (Best_Agent) then
Greedy_Tail (Agent_Vectors.Element (Best_Agent),
Tasks,
Expand All @@ -610,6 +618,10 @@ package body Agpl.Cr.Tasks.Insertions is
Agent_Task,
Agent_Total,
Agent_Delta);
if Agent_Task = Htn.Tasks.No_Task then
Inserted := Htn.Tasks.No_Task;
return;
end if;
New_Ass := Ass;
New_Ass.Set_Agent (New_Agent.Get);
Inserted := Agent_Task;
Expand Down

0 comments on commit 7463513

Please sign in to comment.