DEFINITION MODULE StackEnum; 
(*==============================================================
    Version  : 1.05  16 Apr 1989  C. Lins
    Compiler : Bob Campbell's MPW Modula-2 Compiler
    Component: Stack Structure Utility - Standard Enumerations

    THE ABSTRACTION
    This module provides centralized definitions of the operations
    and exceptions for all stack modules.

    REVISION HISTORY
    v1.04  07 Jan 1988  C. Lins:
        Initial TML Modula-2 implementation
    v1.05  16 Apr 1989  C. Lins:
        Added ComponentID constant.
==============================================================*)

CONST ComponentID = 256;

    (*---------------------------------*)
    (*--       STACK OPERATIONS      --*)

TYPE  Operations = (
                    (*-- Module Initialization *)
                    modinit,

                    (*-- Constructors *)
                    create, destroy, clear, assign, push, pop, poptopof,

                    (*-- Selectors *)
                    isdefined, isempty, isequal, sizeof, typeof,
                    topof, depthof,

                    (*-- Iterators *)
                    loopover, loopchange, traverse, travchange,

                    (*-- Guarded Concurrent Operations *)
                    seize, release
                   );

TYPE  Constructors = Operations [ create    .. poptopof   ];
TYPE  Selectors    = Operations [ isdefined .. depthof    ];
TYPE  Iterators    = Operations [ loopover  .. travchange ];
TYPE  GuardedOps   = Operations [ seize     .. release    ];


    (*---------------------------------*)
    (*--      STACK EXCEPTIONS       --*)

TYPE  Exceptions = (noerr,      (*-- Nothing went wrong, all's well. *)
                    initfailed, (*-- Module initialization failure. *)
                    overflow,   (*-- Stack cannot grow big enough for
                                  -- the requested operation. *)
                    typeerror,  (*-- Type mismatch between stacks *)
                    undefined,  (*-- Stack has not been Created. Or
                                  -- the stack has been Destroyed. *)
                    underflow   (*-- Stack is already empty. *)
                   );

TYPE  ExceptionSet = SET OF Exceptions;

END StackEnum.