language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol1/STRINGS/STRSBUI.DEF
DEFINITION MODULE StrSBUI;
(*==========================================================
Version : 1.00 29 Apr 1989 C. Lins
Compiler : TopSpeed Modula-2
Component: Monolithic Structure String (Opaque version)
Sequential Bounded Unmanaged Iterator
THE ABSTRACTION
This module provides the String data type for statically
allocated data items such as INTEGERs. Any basic data type
whose SIZE(T) is ▓ 4 bytes is supported. An item comparison
routine is necessary to support comparison of strings.
REVISION HISTORY
v1.00 29 Apr 1989 C. Lins:
Initial implementation. Derived from StringCSBMI module.
==========================================================*)
FROM ErrorHandling IMPORT
(*--Type*) HandlerProc;
FROM Items IMPORT
(*--Type*) Item, CompareProc, AccessProc, ChangeProc,
LoopAccessProc, LoopChangeProc;
FROM Relations IMPORT
(*--Type*) Relation;
FROM StrEnum IMPORT
(*--Type*) Exceptions;
(*-----------------------*)
TYPE String;
TYPE StringSize = [ 1 .. 8100 ];
TYPE Position = StringSize;
CONST NullString = String(NIL);
(*-----------------------*)
CONST ModuleID = 7;
PROCEDURE StringError () : Exceptions (*-- out *);
PROCEDURE GetHandler ( theError : Exceptions (*-- in *))
: HandlerProc (*-- out *);
PROCEDURE SetHandler ( theError : Exceptions (*-- in *);
theHandler : HandlerProc (*-- in *));
(*-----------------------*)
PROCEDURE Create ( theSize : StringSize (*--in *);
compareItem: CompareProc (*--in *))
: String (*--out *);
PROCEDURE Destroy (VAR theString : String (*-- inout *));
PROCEDURE Clear (VAR theString : String (*-- inout *));
PROCEDURE Assign ( theString : 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*);
theSubstring: ARRAY OF Item (*--in *);
compareItem : CompareProc (*--in *));
(*-----------------------*)
PROCEDURE IsDefined ( theString : String (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE IsEmpty ( theString : String (*-- in *))
: BOOLEAN (*-- out *);
PROCEDURE SizeOf ( theString : String (*-- in *))
: CARDINAL (*-- out *);
PROCEDURE LengthOf ( theString : String (*-- in *))
: CARDINAL (*-- 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 *);
theIndex : 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 *));
(*-----------------------*)
PROCEDURE LoopOver ( theString : String (*-- in *);
theProcess: LoopAccessProc (*-- in *));
PROCEDURE LoopChange ( theString : String (*-- in *);
theProcess: LoopChangeProc (*-- in *));
PROCEDURE Traverse ( theString : String (*-- in *);
theProcess: AccessProc (*-- in *));
PROCEDURE TravChange ( theString : String (*-- in *);
theProcess: ChangeProc (*-- in *));
END StrSBUI.