language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol1/BAGS/BAGCSBMN.DEF
DEFINITION MODULE BagCSBMN;
(*==============================================================
Version : 1.00 30 Apr 1989 C. Lins
Compiler : TopSpeed Modula-2
Component: Monolithic Structures - Bag
Character Sequential Bounded Managed Non-Iterator
INTRODUCTION
This module supports the abstract data type bag for discrete
values of ASCII CHARs.
REVISION HISTORY
v1.00 30 Apr 1989 C. Lins
Initial implementation for TopSpeed Modula-2.
(C) Copyright 1989 Charles A. Lins
================================================================*)
FROM CharItems IMPORT
(*--Type*) Item;
FROM ErrorHandling IMPORT
(*--Proc*) HandlerProc;
FROM BagEnum IMPORT
(*--Type*) Exceptions;
(*-----------------------*)
TYPE Bag;
TYPE SizeRange = [1..256];
CONST NullBag = Bag(NIL);
(*---------------------------------*)
(*-- EXCEPTIONS --*)
CONST ModuleID = 2;
PROCEDURE BagError () : Exceptions (*-- out *);
PROCEDURE GetHandler ( ofError : Exceptions (*-- in *))
: HandlerProc (*-- out *);
PROCEDURE SetHandler ( ofError : Exceptions (*-- in *);
toHandler : HandlerProc (*-- in *));
(*---------------------------------*)
(*-- CONSTRUCTORS --*)
PROCEDURE Create () : 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 ( theSet : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEmpty ( theSet : Bag (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEqual ( left : Bag (*-- in *);
right : Bag (*-- in *))
: BOOLEAN (*-- 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 BagCSBMN.