home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
modu1096.zip
/
GPMsym
/
cardsequences.def
< prev
next >
Wrap
Text File
|
1996-08-29
|
3KB
|
61 lines
(****************************************************************)
(* *)
(* Gardens Point Modula-2 Library Definition *)
(* *)
(* *)
(* (c) Copyright 1996 Faculty of Information Technology *)
(* Queensland University of Technology *)
(* *)
(* Permission is granted to use, copy and change this *)
(* program as long as the copyright message is left intact *)
(* *)
(****************************************************************)
(*******************************************************************)
(******** support for cardinal sequences...no random access ********)
(*******************************************************************)
(* !NONREC *) DEFINITION MODULE CardSequences; (* kjg nov '84 *)
TYPE ElemPtr;
TYPE Sequence = RECORD
first : ElemPtr; (* ptr to first element *)
last : ElemPtr (* ptr to last element *)
END;
PROCEDURE InitSequence(VAR seq : Sequence);
(* sets all fields NIL *)
PROCEDURE LinkLeft (VAR seq : Sequence; Element : CARDINAL);
PROCEDURE LinkRight(VAR seq : Sequence; Element : CARDINAL);
PROCEDURE InitCursor(seq : Sequence; VAR cursor : ElemPtr);
(* postcondition: cursor is attached. GetNext will get first. *)
PROCEDURE GetFirst( seq : Sequence;
VAR cursor : ElemPtr;
VAR result : CARDINAL );
(* returns the first element. GetFirst on empty sequence rtns NIL *)
(* postcondition: cursor is attached, next GetNext will fetch 2nd *)
PROCEDURE GetNext( VAR cursor : ElemPtr;
VAR result : CARDINAL);
(* precondition: cursor is already attached. Returns element and- *)
(* "increments" cursor. Returns NIL if sequence is already ended. *)
PROCEDURE Ended(cursor : ElemPtr) : BOOLEAN;
(* precondition: cursor is attached. Returns "cursor = NIL" *)
PROCEDURE NextIsLast(cursor : ElemPtr) : BOOLEAN;
(* precondition: cursor is attached. Returns "cursor = seq.last" *)
PROCEDURE IsEmpty(seq : Sequence) : BOOLEAN;
(* postcondition : returns "seq is the empty sequence" *)
PROCEDURE LengthOf(seq : Sequence) : CARDINAL;
PROCEDURE DisposeList(VAR seq : Sequence);
(* reinitializes the sequence header *)
END CardSequences.