home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / util / cdity / cx / txt / listsandnodes.def < prev    next >
Text File  |  1994-09-09  |  2KB  |  73 lines

  1. DEFINITION MODULE ListsAndNodes;
  2.  
  3.    (* ListsAndNodes.def - Einzeilige Funktionsbeschreibung
  4.     * Version     : $VER: ListsAndNodes.def 0.0 (© 1994 Fin Schuppenhauer)
  5.     * Autor       : Fin Schuppenhauer
  6.     *               Braußpark 10
  7.     *               20537 Hamburg
  8.     *               (Germany)
  9.     * E-Mail      : 1schuppe@rzdspc2.informatik.uni-hamburg.de
  10.     * Erstellt am : 09 Sep 1994
  11.     * Letzte Änd. : 09 Sep 1994
  12.     *)
  13.  
  14. IMPORT
  15.    ed:ExecD;
  16.  
  17. CONST
  18.    ALLNODES = -1;
  19.  
  20. TYPE
  21.    StrPtr = POINTER TO ARRAY [0..1023] OF CHAR;
  22.  
  23.    EnumerateProcedure = PROCEDURE (ed.NodePtr);
  24.  
  25.  
  26.  
  27. (* CompareNodeNames() vergleicht die Namen zweier ExecD.Node unter
  28.  * Verwendung von String.Compare. Für Nodes, die auf NIL zeigen gelten
  29.  * folgende Regeln:
  30.  *
  31.  *    node1 node2 Rückgabewert
  32.  *    -------------------------
  33.  *     NIL   NIL  0
  34.  *     NIL  #NIL  1
  35.  *    #NIL   NIL  -1;
  36.  *    #NIL  #NIL  String.Compare()
  37.  *)
  38. PROCEDURE CompareNodeNames (node1, node2 : ed.NodePtr) : LONGINT;
  39.  
  40. (* CountNodes() zählt die Anzahl der Nodes einer ExecD.List. Beim
  41.  * Aufruf ist sicherzustellen, daß list # NIL ist.
  42.  *)
  43. PROCEDURE CountNodes (list : ed.ListPtr) : LONGCARD;
  44.  
  45. (* Mit ChangeNodes() werden <node1> und <node2> vertauscht. Wird für
  46.  * <list> ein Wert # NIL übergeben, so wird der Listenkopf ggf.
  47.  * aktualisiert. Bedingung: <node1> muß in der Liste vor <node2>
  48.  * stehen.
  49.  *)
  50. PROCEDURE ChangeNodes (list : ed.ListPtr; node1, node2 : ed.NodePtr);
  51.  
  52. (* Zum Sortieren einer ganzen Liste (oder auch nur Teilen davon) kann
  53.  * die Prozedur SortExecList() verwendet werden. Zu übergeben sind ein
  54.  * Zeiger auf die zu sortierende Liste (<list>) und ein Wert für
  55.  * <max>, der angibt, bis zu welcher Node die Liste betrachtet werden
  56.  * soll. Mit <max> = ALLNODES werden alle Nodes berücksichtigt.
  57.  *)
  58. PROCEDURE SortExecList (list : ed.ListPtr; max : INTEGER);
  59.  
  60. (* Möchte man auf jeden Knoten einer Liste eine Prozedur ausführen,
  61.  * bietet sich Enumerate(). Diese Prozedur ruft jeden Knoten der Liste
  62.  * mit der übergebenen Prozedur auf.
  63.  *)
  64. PROCEDURE Enumerate (list : ed.ListPtr; enumProc : EnumerateProcedure);
  65.  
  66. (* FreeAllNodes() gibt den belegten Speicher aller Knoten einer Liste
  67.  * mit ExecL.FreeMem wieder frei. Dabei muß auch die Größe des
  68.  * belegten Speicher einer Node angegeben werden.
  69.  *)
  70. PROCEDURE FreeAllNodes (list : ed.ListPtr; nodesize : CARDINAL);
  71.  
  72. END ListsAndNodes.
  73.