From 0966aadcc0e95ddb1fc5e3edfbefe0aaf64d2f76 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Wed, 29 Apr 2020 00:20:09 +1000 Subject: Rough refactor of Cursors and Iterators --- src/directed_graphs.ads | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src/directed_graphs.ads') diff --git a/src/directed_graphs.ads b/src/directed_graphs.ads index 77d9850..7039d76 100644 --- a/src/directed_graphs.ads +++ b/src/directed_graphs.ads @@ -682,9 +682,8 @@ private type Cursor is record Container : Graph_Access; - Node : Node_Type := Node_Type'First; - Visited : Node_Vectors.Vector; - Path_Up : Node_Vectors.Vector; + Place : Node_Maps.Cursor; + Sub_Index : Node_Vectors.Extended_Index; end record; procedure Write @@ -698,10 +697,9 @@ private for Cursor'Read use Read; No_Element : constant Cursor := - (Container => null, - Node => Node_Type'First, - Visited => Node_Vectors.Empty_Vector, - Path_Up => Node_Vectors.Empty_Vector); + (Container => null, + Place => Node_Maps.No_Element, + Sub_Index => Node_Vectors.Extended_Index'First); @@ -811,10 +809,10 @@ private type Subgraph_Iterator is new Ada.Finalization.Limited_Controlled and - Graph_Iterator_Interfaces.Forward_Iterator with + Graph_Iterator_Interfaces.Reversible_Iterator with record Container : Graph_Access; - Root_Node : Node_Type; + Nodes : Node_Vectors.Vector; end record with Disable_Controlled => not Impl.T_Check; @@ -825,11 +823,20 @@ private (Object : in Subgraph_Iterator) return Cursor; + overriding function Last + (Object : in Subgraph_Iterator) + return Cursor; + overriding function Next (Object : in Subgraph_Iterator; Position : in Cursor) return Cursor; + overriding function Previous + (Object : in Subgraph_Iterator; + Position : in Cursor) + return Cursor; + end Directed_Graphs; -- cgit