language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol4/maps/mapsbmn.def
(*
5.3 Bounded Map Interface
*)
DEFINITION MODULE MapSBMN;
(*====================================================================
Version : 2.0 16 Sep 1990 C. Lins
Compiler : Generic pc Modula-2
Component: Monolithic Structures - Map (Opaque version)
Sequential Bounded Managed Non-Iterator
INTRODUCTION
This module provides operations for the bounded map abstract
data type.
REVISION HISTORY
v1.00 04 May 1988 C. Lins
Initial implementation for TML Modula-2.
8/26/89 CL Add SizeOf selector.
v2.00 16 Sep 1990 C. Lins
Created generic pc version
(C) Copyright 1990 Charles A. Lins
=====================================================================*)
FROM Items IMPORT
(*--Type*) Item;
FROM MapTypes IMPORT
(*--Type*) Exceptions;
FROM ErrorHandling IMPORT
(*--Type*) HandlerProc;
FROM TypeManager IMPORT
(*--Type*) TypeID;
(*-----------------------*)
(*
5.3.1 Type Declarations
*)
TYPE Domain = Item;
TYPE Range = Item;
TYPE Map;
VAR NullMap : Map;
TYPE MapSize = [1..4094];
(*---------------------------------*)
(*-- EXCEPTIONS --*)
CONST ModuleID = 4;
PROCEDURE MapError () : Exceptions (*-- out *);
PROCEDURE GetHandler ( theError : Exceptions (*-- in *))
: HandlerProc (*-- out *);
PROCEDURE SetHandler ( theError : Exceptions (*-- in *);
theHandler : HandlerProc (*-- in *));
(*---------------------------------*)
(*-- CONSTRUCTORS --*)
PROCEDURE Create ( theDomain : TypeID (*-- in *);
theRange : TypeID (*-- in *);
theSize : MapSize (*-- in *))
: Map (*-- out *);
PROCEDURE Destroy (VAR theMap : Map (*-- inout *));
PROCEDURE Clear ( theMap : Map (*-- inout *));
PROCEDURE Assign ( theMap : Map (*-- in *);
VAR toMap : Map (*-- inout *));
PROCEDURE Bind ( theMap : Map (*-- inout *);
theItemIn : Domain (*-- in *);
toItemIn : Range (*-- in *));
PROCEDURE Unbind ( theMap : Map (*-- inout *);
theItemIn : Domain (*-- in *));
(*---------------------------------*)
(*-- SELECTORS --*)
PROCEDURE IsDefined ( theMap : Map (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEmpty ( theMap : Map (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEqual ( left : Map (*-- in *);
right : Map (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE SizeOf ( theMap : Map (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE ExtentOf ( theMap : Map (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE DomainOf ( theMap : Map (*-- in *))
: TypeID (*-- out *);
PROCEDURE RangeOf ( theMap : Map (*-- in *))
: TypeID (*-- out *);
PROCEDURE IsBound ( theMap : Map (*-- in *);
theItem : Domain (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE BoundTo ( theMap : Map (*-- in *);
theItem : Domain (*-- in *))
: Range (*-- out *);
PROCEDURE IsBoundTo ( theMap : Map (*-- in *);
theItem : Domain (*-- in *);
VAR toItem : Range (*-- out *))
: BOOLEAN (*-- out *);
END MapSBMN.