diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ada-containers-directed_graphs.ads | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/ada-containers-directed_graphs.ads b/src/ada-containers-directed_graphs.ads new file mode 100644 index 0000000..6d0a2b0 --- /dev/null +++ b/src/ada-containers-directed_graphs.ads @@ -0,0 +1,69 @@ + + +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; + + |