summaryrefslogtreecommitdiff
path: root/src/directed_graphs.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/directed_graphs.ads')
-rw-r--r--src/directed_graphs.ads40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/directed_graphs.ads b/src/directed_graphs.ads
index d31b7c7..3154f75 100644
--- a/src/directed_graphs.ads
+++ b/src/directed_graphs.ads
@@ -670,6 +670,21 @@ package Directed_Graphs is
Position : in Cursor)
return Graph_Iterator_Interfaces.Reversible_Iterator'Class;
+ type Choice_Function is access function
+ (Position : in Cursor)
+ return Cursor;
+
+ type Filter_Function is access function
+ (Position : in Cursor)
+ return Boolean;
+
+ function Iterate_By
+ (Container : in Graph;
+ Start : in Cursor;
+ Chooser : in Choice_Function;
+ Filter : in Filter_Function := null)
+ return Graph_Iterator_Interfaces.Forward_Iterator'Class;
+
function First
(Container : in Graph)
return Cursor;
@@ -963,6 +978,31 @@ private
+ type By_Iterator is new Ada.Finalization.Controlled and
+ Graph_Iterator_Interfaces.Forward_Iterator with
+ record
+ Container : Graph_Access;
+ Start : Cursor;
+ Chooser : Choice_Function;
+ Filter : Filter_Function;
+ end record
+ with Disable_Controlled => not Impl.T_Check;
+
+ overriding procedure Finalize
+ (Object : in out By_Iterator);
+
+ overriding function First
+ (Object : in By_Iterator)
+ return Cursor;
+
+ overriding function Next
+ (Object : in By_Iterator;
+ Position : in Cursor)
+ return Cursor;
+
+
+
+
generic
type Base_Type is private;
type Array_Type is array (Positive range <>) of Base_Type;