DEFINITION MODULE StringsLib;
(*------------------------------------------------------------------------*)
(* Stelle grundlegende Routinen zur Verarbeitung von Zeichenketten zur *)
(* Verfuegung. *)
(* Module provides basic string operations. *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: StringsLib.def,v 1.2 2018/03/24 23:38:09 mriedl Exp mriedl $ *)
PROCEDURE Length(Str : ARRAY OF CHAR) : CARDINAL;
(*----------------------------------------------------------------*)
(* Ermittelt die L"ange der Zeichenkette Str *)
(* *)
(* Returns the length of Str *)
(*----------------------------------------------------------------*)
PROCEDURE Delete(VAR Str : ARRAY OF CHAR;
pos,anz : CARDINAL);
(*----------------------------------------------------------------*)
(* L"oscht ab der Position pos anz Zeichen in Str *)
(* *)
(* Deletes at most "anz" characters from Str, starting at *)
(* position "pos" *)
(*----------------------------------------------------------------*)
PROCEDURE Insert(VAR String : ARRAY OF CHAR;
SubStr : ARRAY OF CHAR;
pos : CARDINAL);
(*----------------------------------------------------------------*)
(* F"ugt, soweit physikalisch m"oglich, die Zeichenkette SubStr *)
(* in die Zeichenkette String an der Position pos ein. String *)
(* MUSS dabei 0C-terminiert sein. *)
(* *)
(* Inserts, if physiaclly possible, the string "SubStr" into *)
(* the string "String" at position "pos". String has to be 0C *)
(* terminated *)
(*----------------------------------------------------------------*)
PROCEDURE Append(VAR Str1 : ARRAY OF CHAR;
Str2 : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* H"angt die Zeichenkette Str2 an Str1 an, wenn dies m"oglich *)
(* Ist Str1 zu kurz ist, wird nur teilweise oder garnichts an- *)
(* geh"angt, ohne eine Fehlermeldung zu produzieren. *)
(* *)
(* Appends string "Str2" to string "Str1" if possibel. If Str1 *)
(* is too short only parts or nothing of Str2 is appended without *)
(* producing an error message *)
(*----------------------------------------------------------------*)
PROCEDURE Copy(VAR Str1 : ARRAY OF CHAR;
Str2 : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* Kopiert die Zeichenkette Str2 in die Zeichenkette Str1, soweit *)
(* dies die physikalischen L"angen von Str1 und Str2 zulassen *)
(* *)
(* Copies, as long as physically possible, string "Str2" to sting *)
(* "Str1". *)
(*----------------------------------------------------------------*)
PROCEDURE Concat(VAR NStr : ARRAY OF CHAR;
Str1,Str2 : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* Verbindet die Zeichenkette Str1 und Str2 und gibt das Resultat *)
(* in NStr zur"uck. Sind die physikalischen L"angen der Zeichen- *)
(* ketten zu kurz, wird entsprechend gek"urzt. *)
(* *)
(* Concattenated strings "Str1" and "Str2" and return the result *)
(* in new string "NStr". If the memory allocated in NStr is not *)
(* sufficient the result may be truncated *)
(*----------------------------------------------------------------*)
PROCEDURE Pos(Str1,Str2 : ARRAY OF CHAR) : CARDINAL;
(*----------------------------------------------------------------*)
(* Sucht die Position der Unterzeichenkette Str2 in der Zeichen- *)
(* kette Str1. Wenn diese nicht gefunden ist, wird MAX(CARDINAL) *)
(* zur"uckgegeben. *)
(* *)
(* Searches for the position of "Str2" in string "Str1". If Str2 *)
(* is not found MAX(CARDINAL) is returned *)
(*----------------------------------------------------------------*)
PROCEDURE PosChar(VAR str : ARRAY OF CHAR;
chr : CHAR;
start : CARDINAL) : CARDINAL;
(*----------------------------------------------------------------*)
(* Such die Position "pos" des Zeichens "chr" in der Zeichen- *)
(* kette "str" ab der Position "start". Wenn "chr" nicht gefunden *)
(* wurde wird "MAX(CARDINAL)" zurueckgegeben. *)
(* *)
(* Searches for the position of character "chr" in string "str" *)
(* starting at position "start".If character "chr" is not found *)
(* MAX(CARDINAL) is returned *)
(*----------------------------------------------------------------*)
TYPE CompareResults = (less, equal, greater);
PROCEDURE Compare (str1, str2: ARRAY OF CHAR): CompareResults;
(*----------------------------------------------------------------*)
(* Gibt less, equal, oder greater zur"uck, je nachdem, ob str1 *)
(* Lexikalisch klein, gleich oder gr"o\3er ist als str2. (ISO) *)
(* *)
(* Returns less, equal or greater depending if str1 is *)
(* lexically smaller, equal or greater as str2. *)
(*----------------------------------------------------------------*)
PROCEDURE Equal(str1, str2: ARRAY OF CHAR) : BOOLEAN;
(*----------------------------------------------------------------*)
(* Pr"uft, ob die Zeichenketten str1 und str2 gleich sind. (ISO) *)
(* *)
(* Checks strings str1 and str2 for beeing equal ) *)
(*----------------------------------------------------------------*)
PROCEDURE Centered(VAR Str : ARRAY OF CHAR;
Width : CARDINAL;
fuell : CHAR);
(*----------------------------------------------------------------*)
(* Fuellt die Zeichenkette Str von links und rechts mit dem *)
(* Zeichen fuell bis die Breite "Width" erreicht ist *)
(* *)
(* Paddes the string "Str" from the left and right with character *)
(* "fuell" until width "Breite" is reached. *)
(*----------------------------------------------------------------*)
PROCEDURE LeftJustified(VAR Str : ARRAY OF CHAR;
Width : CARDINAL;
fuell : CHAR);
(*----------------------------------------------------------------*)
(* Fuellt die Zeichenkette Str von links mit dem Zeichen fuell *)
(* bis die Breite "Width" erreicht ist. *)
(* *)
(* Paddes the string "Str" from the left with character "fuell" *)
(* until width "Breite" is reached. *)
(*----------------------------------------------------------------*)
PROCEDURE RightJustified(VAR Str : ARRAY OF CHAR;
Width : CARDINAL;
fuell : CHAR);
(*----------------------------------------------------------------*)
(* Fuellt die Zeichenkette Str von rechts mit dem Zeichen fuell *)
(* bis die Breite "Width" erreicht ist. *)
(* *)
(* Paddes the string "Str" from right with character "fuell" *)
(* until width "Breite" is reached. *)
(*----------------------------------------------------------------*)
PROCEDURE Stripped(VAR Str : ARRAY OF CHAR;
char : CHAR);
(*----------------------------------------------------------------*)
(* Entfernt das Zeichen char aus der gesamten Zeichenkette Str. *)
(* Soll nur links und rechts entfernt werden ist nacheinander *)
(* StripLeading und StripTrailing aufzurufen. *)
(* *)
(* Erased the character "char" form the compled string Str. If *)
(* only trailing or leading characters are wanted use *)
(* StripLeading or StrinTrailing *)
(*----------------------------------------------------------------*)
PROCEDURE StripLeading(VAR Str : ARRAY OF CHAR;
char : CHAR);
(*----------------------------------------------------------------*)
(* Entfernt das Zeichen char am Anfang der Zeichenkette Str. *)
(* *)
(* Erases leading characted "char", regardless of their number *)
(*----------------------------------------------------------------*)
PROCEDURE StripTrailing(VAR Str : ARRAY OF CHAR;
char : CHAR);
(*----------------------------------------------------------------*)
(* Entfernt das Zeichen char am Ende der Zeichenkette Str. *)
(* *)
(* Erases trailing characted "char", regardless of their number *)
(*----------------------------------------------------------------*)
PROCEDURE RmMultBlnk(VAR Str : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* Entfernt mehrfache Leerzeichen aus der Zeichenkette Str. *)
(* *)
(* Erased multible blanks in the string "Str" *)
(*----------------------------------------------------------------*)
PROCEDURE CapStr(VAR Str : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* Wandelt "Str" durchgehend in Grossbuchstaben um *)
(* *)
(* Capitalize string "Str" for all characters *)
(*----------------------------------------------------------------*)
END StringsLib.