shithub: mc

Download patch

ref: fdf750afef5e10f78f64bf5a219625de9fb3b03f
parent: 957f1f01589ac9278578e2f6cdcab0c6fb5f77fb
author: Ori Bernstein <[email protected]>
date: Mon Aug 6 16:43:20 EDT 2012

Format 32 bit integers.

--- a/fmt.myr
+++ b/fmt.myr
@@ -53,7 +53,7 @@
 			*/
 			'i':
 				i_val = *(ap castto(int32*))
-				write(1, "int\n")
+				n += intfmt(buf[n, buf.len], i_val, 10)
 				;;
 			'l':
 				l_val = *(ap castto(int64*))
@@ -79,12 +79,28 @@
 	-> i
 }
 
-/*
-generic intfmt = {buf, val:@a::tcnum, base
-	write("int \n")
-	-> 0
+const intfmt = {buf, val, base
+	var digits = [
+		'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
+	]
+	var b : char[32]
+	var i
+	var j
+	var n
+
+	n = 0
+	i = 0
+	while val > 0
+		b[i] = digits[val % base]
+		val /= base
+		i++
+	;;
+	n = 0
+	for j = i-1; j >= 0; j--
+		n += encode(buf[n,buf.len], b[j])
+	;;
+	-> n 
 }
-*/
 
 const min = {a : size, b : size
 	if a < b
--- a/test.myr
+++ b/test.myr
@@ -25,7 +25,7 @@
 	;;
 	std.write(1, "Hello, 世界\n")
 	chartypes()
-	std.put("format output %s\n", "x")
+	std.put("format output %i\n", 123)
 }
 
 const chartypes = {