with Ada.Iterator_Interfaces; private with Ada.Containers.Helpers, Ada.Finalization, Ada.Streams; -- maps? sets? generic with Node_Type is (<>); with Node_Array_Type is array (Positive) of Node_Type; with Node_Label_Type is private; with Edge_Label_Type is private; package Ada.Containers.Directed_Graphs is subtype Extended_Node_Type is Node_Type'Base range Node_Type'First - 1 .. Node_Type'Min (Node_Type'Base'Last - 1, Node_Type'Last) + 1; subtype Path is Node_Array_Type; type Edge_Type is record From : Node_Type; To : Node_Type; end record; type Edge_Array_Type is array (Positive) of Edge_Type; type Graph is tagged private; type Cursor is private; type Node_Label_Constant_Reference_Type (Element : not null access constant Node_Label_Type) is private with Implicit_Dereference => Element; type Node_Label_Reference_Type (Element : not null access Node_Label_Type) is private with Implicit_Dereference => Element; type Edge_Label_Constant_Reference_Type (Element : not null access constant Edge_Label_Type) is private with Implicit_Dereference => Element; type Edge_Label_Reference_Type (Element : not null access Edge_Label_Type) is private with Implicit_Dereference => Element; private end Ada.Containers.Directed_Graphs;