Some bugfixes/added errors, convert most to not use simple_passthrough

This commit is contained in:
Nathan Braswell
2016-04-30 15:38:28 -04:00
parent d126cbf24b
commit 7aa1d9983b
77 changed files with 260 additions and 600 deletions

View File

@@ -2,16 +2,41 @@ import vector
import util
import mem
import serialize
import io
fun to_string(in: int): string {
var dest = mem::new<char>(#sizeof<int> * 8)
defer mem::delete(dest)
__if_comp__ __C__ {
simple_passthrough(dest = dest, in = in::) """
sprintf(dest, "%d", in);
"""
}
var ret = string(dest)
fun to_string(in: uchar): string
return to_string_num(in)
fun to_string(in: short): string
return to_string_num(in)
fun to_string(in: ushort): string
return to_string_num(in)
fun to_string(in: int): string
return to_string_num(in)
fun to_string(in: uint): string
return to_string_num(in)
fun to_string(in: long): string
return to_string_num(in)
fun to_string(in: ulong): string
return to_string_num(in)
fun to_string_num<T>(in: T): string {
if (in == 0)
return string("0")
var ret = string()
var pos = 0
var is_neg = false
if (in > 0) {
pos = in
} else {
pos = -in
is_neg = true
}
while (pos) {
ret = string((pos%10 + '0') cast char) + ret
pos = pos / 10
}
if (is_neg)
return string("-") + ret
return ret
}