Parent: [288ae8] (diff)

Download this file

StringsLib.def    235 lines (190 with data), 13.6 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
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.5 2018/07/03 07:51:05 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 SubString(VAR Quelle : ARRAY OF CHAR;
s,e : CARDINAL;
VAR SubStr : ARRAY OF CHAR);
(*----------------------------------------------------------------*)
(* Kopiert Zeichen von Quelle in "SubStr", beginnend an der *)
(* Position "s" bis zur Position "e". Im Fehlerfall wird 0C *)
(* zurueckgegeben. *)
(* *)
(* Copies characters from source to destination starting from *)
(* position "s" to end position "e" in Quelle to target "SubStr". *)
(* In case of an error "0C" isreturned *)
(*----------------------------------------------------------------*)
PROCEDURE AppendChar(VAR str : ARRAY OF CHAR;
char : CHAR);
(*----------------------------------------------------------------*)
(* Haengt das zeichen "char" an die Zeichenkette "str" *)
(* *)
(* Append character "char" to string "str" *)
(*----------------------------------------------------------------*)
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.