(* M2Graph.def maintains the dependancy graph depth.

Copyright (C) 2022-2025 Free Software Foundation, Inc.
Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.

This file is part of GNU Modula-2.

GNU Modula-2 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GNU Modula-2 is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Modula-2; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  *)

DEFINITION MODULE M2Graph ;

FROM Lists IMPORT List ;

TYPE
   Graph ;


(*
   InitGraph - creates and returns an empty graph.
*)

PROCEDURE InitGraph () : Graph ;


(*
   KillGraph - deletes graph and all nodes.
*)

PROCEDURE KillGraph (VAR g: Graph) ;


(*
   AddDependent - adds moduleSym <- dependSym into the graph.
*)

PROCEDURE AddDependent (graph: Graph; moduleSym, dependSym: CARDINAL) ;


(*
   SortGraph - returns a List containing the sorted graph.
*)

PROCEDURE SortGraph (g: Graph; topModule: CARDINAL) : List ;


END M2Graph.
