language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol1/BAGS/BAGSBMN.DEF
DEFINITION MODULE BagSBMN;
(*==============================================================
Version : 1.00 02 May 1989 C. Lins
Compiler : TopSpeed Modula-2
Component: Monolithic Structures - Bag
Sequential Bounded Managed Non-Iterator
THE ABSTRACTION
This module supports the abstraction of the bag data type.
REVISION HISTORY
v1.00 02 May 1989 C. Lins
Initial implementation.
(C) Copyright 1989 Charles A. Lins
==============================================================*)
FROM Items IMPORT
(*--Type*) Item;
FROM ErrorHandling IMPORT
(*--Proc*) HandlerProc;
FROM BagEnum IMPORT
(*--Type*) Exceptions;
FROM TypeManager IMPORT
(*--Type*) TypeID;
(*-----------------------*)
TYPE Bag;
TYPE BagSize = [ 1 .. 5300 ];
CONST NullBag = Bag(NIL);
(*---------------------------------*)
(*-- EXCEPTIONS --*)
CONST ModuleID = 4;
PROCEDURE BagError () : Exceptions (*-- out *);
PROCEDURE GetHandler ( ofError : Exceptions (*-- in *))
: HandlerProc (*-- out *);
PROCEDURE SetHandler ( ofError : Exceptions (*-- in *);
toHandler : HandlerProc (*-- in *));
(*---------------------------------*)
(*-- CONSTRUCTORS --*)
PROCEDURE Create ( theSize : BagSize (*-- in *);
theType : TypeID (*-- in *))
: Bag (*-- out *);
PROCEDURE Destroy (VAR theBag : Bag (*-- inout *));
PROCEDURE Clear (VAR theBag : Bag (*-- inout *));
PROCEDURE Assign ( theBag : Bag (*-- in *);
VAR toBag : Bag (*-- inout *));
PROCEDURE Include ( theItem : Item (*-- in *);
VAR inBag : Bag (*-- inout *));
PROCEDURE Exclude ( theItem : Item (*-- in *);
VAR fromBag : Bag (*-- inout *));
PROCEDURE Union ( left : Bag (*-- in *);
right : Bag (*-- in *);
VAR toBag : Bag (*-- inout *));
PROCEDURE Intersection ( left : Bag (*-- in *);
right : Bag (*-- in *);
VAR toBag : Bag (*-- inout *));
PROCEDURE Difference ( left : Bag (*-- in *);
right : Bag (*-- in *);
VAR toBag : Bag (*-- inout *));
PROCEDURE SymDifference ( left : Bag (*-- in *);
right : Bag (*-- in *);
VAR toBag : Bag (*-- inout *));
(*---------------------------------*)
(*-- SELECTORS --*)
PROCEDURE IsDefined ( theBag : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEmpty ( theBag : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEqual ( left : Bag (*-- in *);
right : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE SizeOf ( theBag : Bag (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE TypeOf ( theBag : Bag (*-- in *))
: TypeID (*-- out *);
PROCEDURE NumMembers ( theBag : Bag (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE UniqueMembers ( theBag : Bag (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE IsAMember ( theItem : Item (*-- in *);
theBag : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE NumberOf ( theItem : Item (*-- in *);
theBag : Bag (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE IsSubset ( left : Bag (*-- in *);
right : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsProperSubset( left : Bag (*-- in *);
right : Bag (*-- in *))
: BOOLEAN (*-- out *);
END BagSBMN.