Subversion Repositories Kolibri OS

Rev

Rev 7696 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7696 Rev 7983
Line 1... Line 1...
1
(*
1
(*
2
    BSD 2-Clause License
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    Copyright (c) 2018-2019, Anton Krotov
4
    Copyright (c) 2018-2020, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 11... Line 11...
11
 
11
 
12
 
12
 
13
PROCEDURE append* (VAR s1: ARRAY OF CHAR; s2: ARRAY OF CHAR);
13
PROCEDURE append* (VAR s1: ARRAY OF CHAR; s2: ARRAY OF CHAR);
-
 
14
VAR
14
VAR
15
    n1, n2, i, j: INTEGER;
15
    n1, n2, i, j: INTEGER;
16
 
16
BEGIN
17
BEGIN
Line 17... Line 18...
17
    n1 := LENGTH(s1);
18
    n1 := LENGTH(s1);
Line 30... Line 31...
30
    s1[j] := 0X
31
    s1[j] := 0X
Line 31... Line 32...
31
 
32
 
Line 32... Line 33...
32
END append;
33
END append;
33
 
34
 
34
 
35
 
35
PROCEDURE reverse* (VAR s: ARRAY OF CHAR);
36
PROCEDURE reverse (VAR s: ARRAY OF CHAR);
Line 36... Line 37...
36
VAR
37
VAR
37
    i, j: INTEGER;
-
 
38
    a, b: CHAR;
38
    i, j: INTEGER;
39
 
39
    a, b: CHAR;
Line 40... Line 40...
40
BEGIN
40
 
41
 
41
BEGIN
Line 170... Line 170...
170
PROCEDURE space* (c: CHAR): BOOLEAN;
170
PROCEDURE space* (c: CHAR): BOOLEAN;
171
    RETURN (0X < c) & (c <= 20X)
171
    RETURN (0X < c) & (c <= 20X)
172
END space;
172
END space;
Line -... Line 173...
-
 
173
 
-
 
174
 
-
 
175
PROCEDURE cap (VAR c: CHAR);
-
 
176
BEGIN
-
 
177
    IF ("a" <= c) & (c <= "z") THEN
-
 
178
        c := CHR(ORD(c) - 32)
-
 
179
    END
-
 
180
END cap;
-
 
181
 
-
 
182
 
-
 
183
PROCEDURE UpCase* (VAR str: ARRAY OF CHAR);
-
 
184
VAR
-
 
185
    i: INTEGER;
-
 
186
 
-
 
187
BEGIN
-
 
188
    i := 0;
-
 
189
    WHILE (i < LEN(str)) & (str[i] # 0X) DO
-
 
190
        cap(str[i]);
-
 
191
        INC(i)
-
 
192
    END
-
 
193
END UpCase;
173
 
194
 
174
 
195
 
175
PROCEDURE StrToInt* (str: ARRAY OF CHAR; VAR x: INTEGER): BOOLEAN;
196
PROCEDURE StrToInt* (str: ARRAY OF CHAR; VAR x: INTEGER): BOOLEAN;
176
VAR
197
VAR
Line 274... Line 295...
274
        CASE c OF
295
        CASE c OF
275
        |00X..7FX:
296
        |00X..7FX:
276
            u := ORD(c)
297
            u := ORD(c)
Line 277... Line 298...
277
 
298
 
278
        |0C1X..0DFX:
299
        |0C1X..0DFX:
279
            u := LSL(ORD(c) - 0C0H, 6);
300
            u := (ORD(c) - 0C0H) * 64;
280
            IF i + 1 < srclen THEN
301
            IF i + 1 < srclen THEN
281
                INC(i);
302
                INC(i);
282
                INC(u, ORD(BITS(ORD(src[i])) * {0..5}))
303
                INC(u, ORD(src[i]) MOD 64)
Line 283... Line 304...
283
            END
304
            END
284
 
305
 
285
        |0E1X..0EFX:
306
        |0E1X..0EFX:
286
            u := LSL(ORD(c) - 0E0H, 12);
307
            u := (ORD(c) - 0E0H) * 4096;
287
            IF i + 1 < srclen THEN
308
            IF i + 1 < srclen THEN
288
                INC(i);
309
                INC(i);
289
                INC(u, ORD(BITS(ORD(src[i])) * {0..5}) * 64)
310
                INC(u, (ORD(src[i]) MOD 64) * 64)
290
            END;
311
            END;
291
            IF i + 1 < srclen THEN
312
            IF i + 1 < srclen THEN
292
                INC(i);
313
                INC(i);
293
                INC(u, ORD(BITS(ORD(src[i])) * {0..5}))
314
                INC(u, ORD(src[i]) MOD 64)
294
            END
315
            END
295
(*
316
(*
296
        |0F1X..0F7X:
317
        |0F1X..0F7X: