language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol1/STRINGS/STRSBMI.DEF
DEFINITION MODULE StrSBMI;
(*====================================================================
Version : 1.00 29 Apr 1989 C. Lins
Compiler : TopSpeed Modula-2
Component: Monolithic Structure String (Opaque version)
Sequential Bounded Managed Iterator
REVISION HISTORY
v1.00 29 Apr 1989 C. Lins:
Initial implementation.
====================================================================*)
FROM ErrorHandling IMPORT
(*--Type*) HandlerProc;
FROM Items IMPORT
(*--Type*) Item, AccessProc, LoopAccessProc, LoopChangeProc;
FROM Relations IMPORT
(*--Type*) Relation;
FROM StrEnum IMPORT
(*--Type*) Exceptions;
FROM TypeManager IMPORT
(*--Type*) TypeID;
(*-----------------------*)
TYPE String;
TYPE StringSize = [1..8100];
TYPE Position = StringSize;
CONST NullString = String(NIL);
(*---------------------------------*)
(*-- EXCEPTIONS --*)
CONST ModuleID = 5;
PROCEDURE StringError () : Exceptions (*-- out *);
PROCEDURE GetHandler ( ofError : Exceptions (*-- in *))
: HandlerProc (*-- out *);
PROCEDURE SetHandler ( ofError : Exceptions (*-- in *);
toHandler : HandlerProc (*-- in *));
(*---------------------------------*)
(*-- CONSTRUCTORS --*)
PROCEDURE Create ( withSizeOf : StringSize (*-- in *);
theDataType : TypeID (*-- in *))
: String (*-- out *);
PROCEDURE Destroy (VAR theString : String (*-- inout *));
PROCEDURE Clear (VAR theString : String (*-- inout *));
PROCEDURE Assign ( fromString : String (*-- in *);
VAR toString : String (*-- inout *));
PROCEDURE Prepend ( theString : String (*-- in *);
VAR toString : String (*-- inout *));
PROCEDURE Append ( theString : String (*-- in *);
VAR toString : String (*-- inout *));
PROCEDURE Insert ( theString : String (*-- in *);
VAR toString : String (*-- inout *);
theIndex : Position (*-- in *));
PROCEDURE Delete (VAR theString : String (*-- inout *);
fromIndex : Position (*-- in *);
toIndex : Position (*-- in *));
PROCEDURE Replace (VAR theString : String (*-- inout *);
theIndex : Position (*-- in *);
withString : String (*-- in *));
PROCEDURE SetItem (VAR theString : String (*-- inout *);
theIndex : Position (*-- in *);
theItem : Item (*-- in *));
PROCEDURE Construct (VAR theString : String (*-- inout *);
theDataType : TypeID (*-- in *);
VAR theSubstring : ARRAY OF Item (*-- in *));
(*---------------------------------*)
(*-- SELECTORS --*)
PROCEDURE IsDefined ( theString : String (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEmpty ( theString : String (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE LengthOf ( theString : String (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE SizeOf ( theString : String (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE TypeOf ( theString : String (*-- in *))
: TypeID (*-- out *);
PROCEDURE Compare ( left : String (*-- in *);
right : String (*-- in *))
: Relation (*-- out *);
PROCEDURE IsEqual ( left : String (*-- in *);
right : String (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE ItemOf ( theString : String (*-- in *);
atIndex : Position (*-- in *))
: Item (*-- out *);
PROCEDURE SliceOf ( theString : String (*-- in *);
fromIndex : Position (*-- in *);
toIndex : Position (*-- in *);
VAR theSlice : ARRAY OF Item (*-- out *));
PROCEDURE SubstringOf( theString : String (*-- in *);
VAR toSubstring: ARRAY OF Item (*-- out *));
(*---------------------------------*)
(*-- ITERATORS --*)
PROCEDURE LoopOver ( theString : String (*-- in *);
process : LoopAccessProc (*-- in *));
PROCEDURE LoopChange ( theString : String (*-- in *);
process : LoopChangeProc (*-- in *));
PROCEDURE Traverse ( theString : String (*-- in *);
process : AccessProc (*-- in *));
END StrSBMI.