ref: 076b8c43103645df52a89ca1f163974cadc4e677
parent: fdf750afef5e10f78f64bf5a219625de9fb3b03f
author: Ori Bernstein <[email protected]>
date: Mon Aug 6 17:00:03 EDT 2012
integer formatting.
--- a/fmt.myr
+++ b/fmt.myr
@@ -21,13 +21,8 @@
var c
var n
var ap
- var s_val;
- var b_val;
- /*
- var w_val;
- */
var i_val;
- var l_val;
+ var s_val;
n = 0
while fmt.len
@@ -42,25 +37,27 @@
;;
/* format integers */
'b':
- b_val = *(ap castto(int8*))
- write(1, "int\n")
+ i_val = *(ap castto(int8*)) castto(int64)
+ n += intfmt(buf[n, buf.len], i_val, 10)
;;
/*
'w':
- w_val = *(ap castto(int16*))
- write(1, "int\n")
+ i_val = *(ap castto(int16*)) castto(int64)
+ n += intfmt(buf[n, buf.len], i_val, 10)
;;
*/
'i':
- i_val = *(ap castto(int32*))
+ i_val = *(ap castto(int32*)) castto(int64)
n += intfmt(buf[n, buf.len], i_val, 10)
;;
'l':
- l_val = *(ap castto(int64*))
- write(1, "int\n")
+ i_val = *(ap castto(int64*))
+ n += intfmt(buf[n, buf.len], i_val, 10)
;;
'p':
- write(1, "ptr\n")
+ strfmt(buf[n,buf.len], "0x")
+ i_val = *(ap castto(int64*))
+ n += intfmt(buf[n, buf.len], i_val, 16)
;;
;;
else
@@ -90,7 +87,11 @@
n = 0
i = 0
- while val > 0
+ if val < 0
+ b[i] = '-'
+ i++
+ ;;
+ while val != 0
b[i] = digits[val % base]
val /= base
i++