From 3173b63c9384eeb3ec418b288ed1bb5d01342d29 Mon Sep 17 00:00:00 2001 From: Able Date: Mon, 16 Sep 2024 20:45:00 -0500 Subject: [PATCH] minor changes --- sysdata/libraries/stn/src/string.hb | 61 +++++++++++++++-------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/sysdata/libraries/stn/src/string.hb b/sysdata/libraries/stn/src/string.hb index 042de025..cc20d817 100644 --- a/sysdata/libraries/stn/src/string.hb +++ b/sysdata/libraries/stn/src/string.hb @@ -3,8 +3,6 @@ length := fn(ptr: ^u8): int { loop if *(ptr + len) == 0 break else len += 1 return len } - -// WTFFF is wrong with display_int display_int := fn(num: int, p: ^u8): ^u8 { ptr := p negative := num < 0 @@ -12,37 +10,42 @@ display_int := fn(num: int, p: ^u8): ^u8 { num = -num } if num == 0 { - *ptr = 48 - ptr += 1 - } else { - loop if num == 0 break else { - *ptr = num % 10 + 48 - ptr += 1 - num /= 10 - } + *p = 48; + *(p + 1) = 0 + return p } - if negative { - *ptr = 45 - ptr += 1 - }; - *ptr = 0 - @inline(reverse, p) + + neg := false + if num < 0 { + neg = true + num = -num + } + + loop if num == 0 break else { + *(p + i) = num % 10 + 48 + num /= 10 + i += 1 + } + + if neg { + *(p + i) = 45 + i += 1 + } + + reverse(p, i) + return p } -reverse := fn(s: ^u8): void { - //reverse a string, don't remove digits - len := 0 - loop if *(s + len) == 0 break else len += 1 - i := 0 - j := len - 1 - temp := 0 - loop if i >= j break else { - temp = *(s + i); - *(s + i) = *(s + j); - *(s + j) = temp - i += 1 - j -= 1 +reverse := fn(p: ^u8, len: int): void { + start := 0 + end := len - 1 + loop if start >= end break else { + temp := *(p + start); + *(p + start) = *(p + end); + *(p + end) = temp + start += 1 + end -= 1 } return } \ No newline at end of file