Subversion Repositories Kolibri OS

Rev

Rev 8097 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8097 Rev 8859
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-2020, Anton Krotov
4
    Copyright (c) 2018-2021, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 71... Line 71...
71
        UNTIL x = 0
71
        UNTIL x = 0
72
    END
72
    END
73
END IntToStr;
73
END IntToStr;
Line 74... Line -...
74
 
-
 
75
 
-
 
76
PROCEDURE IntToHex* (x: INTEGER; VAR str: ARRAY OF CHAR; n: INTEGER);
-
 
77
BEGIN
-
 
78
    str[n] := 0X;
-
 
79
    WHILE n > 0 DO
-
 
80
        str[n - 1] := CHR(UTILS.hexdgt(x MOD 16));
-
 
81
        x := x DIV 16;
-
 
82
        DEC(n)
-
 
83
    END
-
 
84
END IntToHex;
-
 
85
 
74
 
86
 
75
 
87
PROCEDURE search* (s: ARRAY OF CHAR; VAR pos: INTEGER; c: CHAR; forward: BOOLEAN);
76
PROCEDURE search* (s: ARRAY OF CHAR; VAR pos: INTEGER; c: CHAR; forward: BOOLEAN);
Line 88... Line 77...
88
VAR
77
VAR
Line 108... Line 97...
108
        pos := -1
97
        pos := -1
109
    END
98
    END
110
END search;
99
END search;
Line -... Line 100...
-
 
100
 
-
 
101
 
-
 
102
PROCEDURE replace* (VAR s: ARRAY OF CHAR; find, repl: CHAR);
-
 
103
VAR
-
 
104
    i, strlen: INTEGER;
-
 
105
 
-
 
106
BEGIN
-
 
107
    strlen := LENGTH(s) - 1;
-
 
108
    FOR i := 0 TO strlen DO
-
 
109
        IF s[i] = find THEN
-
 
110
            s[i] := repl
-
 
111
        END
-
 
112
    END
-
 
113
END replace;
-
 
114
 
-
 
115
 
-
 
116
PROCEDURE trim* (source: ARRAY OF CHAR; VAR result: ARRAY OF CHAR);
-
 
117
VAR
-
 
118
    LenS, start, _end, i, j: INTEGER;
-
 
119
 
-
 
120
BEGIN
-
 
121
    LenS := LENGTH(source) - 1;
-
 
122
    j := 0;
-
 
123
    IF LenS >= 0 THEN
-
 
124
        start := 0;
-
 
125
        WHILE (start <= LenS) & (source[start] <= 20X) DO
-
 
126
            INC(start)
-
 
127
        END;
-
 
128
 
-
 
129
        _end := LenS;
-
 
130
        WHILE (_end >= 0) & (source[_end] <= 20X) DO
-
 
131
            DEC(_end)
-
 
132
        END;
-
 
133
 
-
 
134
        FOR i := start TO _end DO
-
 
135
            result[j] := source[i];
-
 
136
            INC(j)
-
 
137
        END
-
 
138
    END;
-
 
139
    result[j] := 0X
-
 
140
END trim;
111
 
141
 
112
 
142
 
113
PROCEDURE letter* (c: CHAR): BOOLEAN;
143
PROCEDURE letter* (c: CHAR): BOOLEAN;
Line 128... Line 158...
128
PROCEDURE space* (c: CHAR): BOOLEAN;
158
PROCEDURE space* (c: CHAR): BOOLEAN;
129
    RETURN (0X < c) & (c <= 20X)
159
    RETURN (0X < c) & (c <= 20X)
130
END space;
160
END space;
Line 131... Line 161...
131
 
161
 
132
 
162
 
133
PROCEDURE cap (VAR c: CHAR);
163
PROCEDURE cap* (VAR c: CHAR);
134
BEGIN
164
BEGIN
135
    IF ("a" <= c) & (c <= "z") THEN
165
    IF ("a" <= c) & (c <= "z") THEN
136
        c := CHR(ORD(c) - 32)
166
        c := CHR(ORD(c) - 32)
Line 288... Line 318...
288
 
318
 
289
    RETURN j
319
    RETURN j
Line -... Line 320...
-
 
320
END Utf8To16;
-
 
321
 
-
 
322
 
-
 
323
PROCEDURE HashStr* (name: ARRAY OF CHAR): INTEGER;
-
 
324
VAR
-
 
325
    i, h: INTEGER;
-
 
326
    g: SET;
-
 
327
 
-
 
328
BEGIN
-
 
329
    h := 0;
-
 
330
    i := 0;
-
 
331
    WHILE name[i] # 0X DO
-
 
332
        h := h * 16 + ORD(name[i]);
-
 
333
        g := BITS(h) * {28..31};
-
 
334
        h := ORD(BITS(h) / BITS(LSR(ORD(g), 24)) - g);
-
 
335
        INC(i)
-
 
336
    END
-
 
337
 
-
 
338
    RETURN h
290
END Utf8To16;
339
END HashStr;
291
 
340