(* ----------------------------------------------------------------------------
 * $Id: MASSTOR.md,v 1.3 1995/12/16 14:51:35 kredel Exp $
 * ----------------------------------------------------------------------------
 * This file is part of MAS.
 * ----------------------------------------------------------------------------
 * Copyright (c) 1989 - 1992 Universitaet Passau
 * ----------------------------------------------------------------------------
 * $Log: MASSTOR.md,v $
 * Revision 1.3  1995/12/16 14:51:35  kredel
 * Removed old Atari related comments.
 *
 * Revision 1.2  1992/02/12  17:31:56  pesch
 * Moved CONST definition to the right place
 *
 * Revision 1.1  1992/01/22  15:10:14  kredel
 * Initial revision
 *
 * ----------------------------------------------------------------------------
 *)

DEFINITION MODULE MASSTOR;

(* MAS Storage Definition Module. *)



(* Import lists and Definitions *) 

FROM MASELEM IMPORT GAMMAINT;

FROM SYSTEM IMPORT ADDRESS;


TYPE LIST = GAMMAINT;


VAR BETA, BETA1, SIL: LIST;

    NU, GCC, GCCC, GCM, RHO,

    TAU, TAU0: GAMMAINT;

CONST rcsid = "$Id: MASSTOR.md,v 1.3 1995/12/16 14:51:35 kredel Exp $";
CONST copyright = "Copyright (c) 1989 - 1992 Universitaet Passau";



PROCEDURE ADV(L: LIST; VAR a, LP: LIST);
(*Advance.  L is a non-null list.  a=FIRST(L) and LP=RED(L). *)


PROCEDURE CELLS(): GAMMAINT;
(*Cells. Returns the used cells since storage initialization. *)


PROCEDURE CLOCK(): GAMMAINT;
(*Clock. Returns the current CPU clock reading in seconds. *)


PROCEDURE COMP(a,L: LIST): LIST;
(*Composition.  a is an object.  L is a list.  Returns the 
composition of a and L. *)


PROCEDURE DEQUE(L: LIST): LIST;
(*Dequeue.  L is a non empty queue representing list.  Returns a, the 
first object from the queue. L is updated. *)


PROCEDURE EMPTYQUE(M: LIST): BOOLEAN;
(*Empty Queue.  Tests if a queue is empty. *)


PROCEDURE ENQUE(a,L: LIST);
(*Enqueue.  a is an object.  L is a queue representing list. Appends a
to the quque L. *)


PROCEDURE FIRST(L: LIST): LIST;
(*First.  L is a non-null list.  a is the first element of L. *)


PROCEDURE NEWQUE(): LIST;
(*New Queue.  Returns a new empty queue. *)


PROCEDURE INV(L: LIST): LIST;
(*Inverse.  L is a list.  The inverse of L is returned.  The list L is
modified. *)


PROCEDURE LENGTH(L: LIST): GAMMAINT;
(*Length.  L is a list.  Returns length(L).*)


PROCEDURE LIST1(a: LIST): LIST;
(*List, 1 element.  a is an object.  L is the list (a). *)


PROCEDURE LISTVAR(VAR L: LIST);
(*List variable.  L is a list.  The address of L is made accessible
to the garbage collector. *)


PROCEDURE RED(L: LIST): LIST;
(*Reductum.  L is a non-null list.  Returns the reductum of L. *)


PROCEDURE SFIRST(L, a: LIST);
(*Set first.  L is a non-null list.  a is an object.  The first
element of L is changed to a. *)


PROCEDURE SRED(L, LP: LIST);
(*Set reductum.  L is a non-null list.  LP is a list.  The reductum
of L is changed to LP. *)


PROCEDURE TIME(): GAMMAINT;
(*Time. Returns the CLOCK minus the garbage collection time TAU.  *)


END MASSTOR.


(* -EOF- *)