-- LongString.Mesa Last edited by Johnsson on 5-Dec-80 14:57:46
DIRECTORY
Environment USING [bitsPerCharacter, charsPerPage, charsPerWord, logCharsPerPage];
LongString: DEFINITIONS =
BEGIN
bitsPerCharacter: CARDINAL = Environment.bitsPerCharacter;
charsPerPage: CARDINAL = Environment.charsPerPage;
charsPerWord: CARDINAL = Environment.charsPerWord;
logCharsPerPage: CARDINAL = Environment.logCharsPerPage;
SubStringDescriptor: TYPE = RECORD [base: LONG STRING, offset, length: CARDINAL];
SubString: TYPE = POINTER TO SubStringDescriptor;
Overflow: SIGNAL;
InvalidNumber: SIGNAL;
StringBoundsFault: SIGNAL [s: LONG STRING] RETURNS [ns: LONG STRING];
WordsForString: PROCEDURE [nchars: CARDINAL] RETURNS [CARDINAL];
AppendChar: PROCEDURE [s: LONG STRING, c: CHARACTER];
AppendString: PROCEDURE [to: LONG STRING, from: LONG STRING];
EqualStrings, EquivalentStrings: PROCEDURE [s1, s2: LONG STRING] RETURNS [BOOLEAN];
EqualString: PROCEDURE [s1, s2: LONG STRING] RETURNS [BOOLEAN] = INLINE {
RETURN[EqualStrings[s1, s2]]};
EquivalentString: PROCEDURE [s1, s2: LONG STRING] RETURNS [BOOLEAN] = INLINE {
RETURN[EquivalentStrings[s1, s2]]};
CompareStrings: PROCEDURE [s1, s2: LONG STRING, ignoreCase: BOOLEAN ← TRUE]
RETURNS [INTEGER]; -- -1 => less, 0 => equal, 1 => greater
AppendSubString: PROCEDURE [to: LONG STRING, from: SubString];
EqualSubStrings, EquivalentSubStrings: PROCEDURE [s1, s2: SubString]
RETURNS [BOOLEAN];
EqualSubString: PROCEDURE [s1, s2: SubString] RETURNS [BOOLEAN] = INLINE {
RETURN[EqualSubStrings[s1, s2]]};
EquivalentSubString: PROCEDURE [s1, s2: SubString] RETURNS [BOOLEAN] = INLINE {
RETURN[EquivalentSubStrings[s1, s2]]};
DeleteSubString: PROCEDURE [s: SubString];
UpperCase, LowerCase: PROCEDURE [c: CHARACTER] RETURNS [CHARACTER];
-- routines for converting between strings and numbers
StringToNumber: PROCEDURE [s: LONG STRING, radix: CARDINAL ← 10] RETURNS [UNSPECIFIED];
StringToDecimal: PROCEDURE [s: LONG STRING] RETURNS [INTEGER] = INLINE
BEGIN RETURN[StringToNumber[s, 10]] END;
StringToOctal: PROCEDURE [s: LONG STRING] RETURNS [UNSPECIFIED] = INLINE
BEGIN RETURN[StringToNumber[s, 8]]; END;
StringToLongNumber: PROCEDURE [s: LONG STRING, radix: CARDINAL ← 10]
RETURNS [LONG UNSPECIFIED];
AppendNumber: PROCEDURE [s: LONG STRING, n: UNSPECIFIED, radix: CARDINAL ← 10];
AppendDecimal: PROCEDURE [s: LONG STRING, n: INTEGER];
AppendOctal: PROCEDURE [s: LONG STRING, n: UNSPECIFIED];
AppendLongNumber: PROCEDURE [s: LONG STRING, n: LONG UNSPECIFIED, radix: CARDINAL ← 10];
AppendLongDecimal: PROCEDURE [s: LONG STRING, n: LONG INTEGER];
END.