diff options
author | Kyle Gunger <kgunger12@gmail.com> | 2023-02-16 05:14:31 -0500 |
---|---|---|
committer | Kyle Gunger <kgunger12@gmail.com> | 2023-02-16 05:14:31 -0500 |
commit | 09df1bb48823631228af3df647111af1eebc854b (patch) | |
tree | ef091fc942b00b224f7d66aacb0c3db0ab4d490c /tnslc/util.tnsl | |
parent | c94edbe007910755087e71cbb1a6a349d75e9b85 (diff) |
Collapse tnslc into a single file
Diffstat (limited to 'tnslc/util.tnsl')
-rw-r--r-- | tnslc/util.tnsl | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/tnslc/util.tnsl b/tnslc/util.tnsl deleted file mode 100644 index d4a7b4b..0000000 --- a/tnslc/util.tnsl +++ /dev/null @@ -1,199 +0,0 @@ -/## - Copyright 2021-2022 Kyle Gunger - - This file is licensed under the CDDL 1.0 (the License) - and may only be used in accordance with the License. - You should have received a copy of the License with this - software/source code. If you did not, a copy can be found - at the following URL: - - https://opensource.org/licenses/CDDL-1.0 - - THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO - WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE - EXPRESS OR IMPLIED -#/ - -/# util.tnsl - Utility functions that may be useful in many places. -#/ - -/; string_equate({}uint8 s1, s2) [bool] - /; if (len s1 !== len s2) - ;return false - ;/ - - /; loop (int i = 0; i < len s1) [i++] - /; if (s1{i} !== s2{i}) - ;return false - ;/ - ;/ - - ;return true -;/ - -/; add_strings (~{}uint8 a, b) - /; loop (int i = 0; i < len b`) [i++] - ;a`.append(b`{i}) - ;/ -;/ - -/; reverse_string({}uint8 str) [{}uint8] - ;{}uint8 out = "" - - /; loop (int i = len str; i > 0) [i = i - 1] - ;out.append(str{i - 1}) - ;/ - - ;return out -;/ - -/; is_whitespace (uint8 c) [bool] - ;return c == '\t' || c == '\n' || c == ' ' -;/ - -/; is_digit (uint8 c) [bool] - ;return c !< '0' && c !> '9' -;/ - -/; is_alpha (uint8 c) [bool] - ;bool low = c !< 'A' && c !> 'Z', high = c !< 'a' && c >! 'z' - ;return low || high -;/ - -/; digit_to_char(int i) [uint8] - ;uint8 out = '0' - ;out = out + (i % 10) - ;return out -;/ - -/; string_from_int(int i) [{}uint8] - ;{}uint8 c = "" - ;bool n = false - - /; if (i < 0) - ;n = true - ;i = -i - ;/ - - ;c.append(digit_to_char(i)) - ;i = i / 10 - - /; loop (i !== 0) [i = i / 10] - ;c.append(digit_to_char(i)) - ;/ - - /;if (n) - ;c.append('-') - ;/ - - ;return reverse_string(c) -;/ - -/; int_from_string ({}uint8 str) [int] - ;bool inv = str{0} == '-' - ;int out = 0 - ;int fac = 10 - ;int i = 0 - - /; if (inv) - ;i++ - ;/ - - /; loop (i < len str) [i++] - ;out = out * fac - ;out = out + str{i} - '0' - ;/ - - /; if (inv) - ;out = -out - ;/ - - ;return out -;/ - -/; get_escape_code (uint8 c) [uint8] - /; if (c == '\'') - ;return '\'' - ;; else if (c == '"') - ;return '"' - ;; else if (c == 'a') - ;return '\a' - ;; else if (c == 'b') - ;return '\b' - ;; else if (c == 'e') - ;return '\e' - ;; else if (c == 'f') - ;return '\f' - ;; else if (c == 'n') - ;return '\n' - ;; else if (c == 'r') - ;return '\r' - ;; else if (c == 't') - ;return '\t' - ;; else if (c == 'v') - ;return '\v' - ;/ - - ;return 0 -;/ - -/; parse_hex_code ({}uint8 c) [uint8] - ;uint8 out = 0 - - /; loop (int i = 0; i < len c) [i++] - ;out = out * 16 - ;uint8 tmp = c{i} - /; if (tmp !< 'a') - ;tmp = tmp - 'a' + 'A' - ;/ - - /; if (tmp !< '0' && tmp !> '9') - ;out = out + tmp - '0' - ;; else if (tmp !< 'A' && tmp !> 'F') - ;out = out + 10 + (tmp - 'A') - ;; else - ;break - ;/ - ;/ - - ;return out -;/ - -/; unquote_char ({}uint8 c) [uint8] - /; if (c{1} == '\\') - /; if (c{2} == 'x') - ;{}uint8 d = {c{3}, c{4}} - ;return parse_hex_code(d) - ;/ - ;return get_escape_code(c{2}) - ;/ - - ;return c{1} -;/ - -/; unquote_string ({}uint8 str) [{}uint8] - ;{}uint8 out = "" - ;{}uint8 unc = "'" - - /; loop (int i = 1; i < len str - 1) [i++] - /; if (str{i} == '\\') - ;unc.append('\\') - ;unc.append(str{i + 1}) - ;i++ - - /; if (str{i} == 'x') - ;unc.append(str{i + 1}) - ;unc.append(str{i + 2}) - ;i = i + 2 - ;/ - - ;out.append(unquote_char(unc)) - ;unc = "'" - ;; else - ;out.append(str{i}) - ;/ - ;/ - - ;return out -;/ |