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 |