changeset 339:74cab9b5f2a4

Added parseFloat64 and parseFloat32 along with a sample that exercises number parsing from a string
author Michael Pavone <pavone@retrodev.com>
date Sat, 04 Apr 2015 12:34:43 -0700
parents 1458c069c715
children 7279e21dad68
files modules/string.tp samples/numparse.tp
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/modules/string.tp	Sat Apr 04 11:54:46 2015 -0700
+++ b/modules/string.tp	Sat Apr 04 12:34:43 2015 -0700
@@ -145,6 +145,19 @@
 		}
 		num
 	}
+	
+	llMessage: parseFloat64 withVars: {
+		fret64 <- obj_float64 ptr
+	} andCode: {
+		//TODO: This should probably detect non-numeric values and return an option type
+		fret64 <- make_object: (addr_of: obj_float64_meta) NULL 0
+		fret64 num!: (atof: data)
+		fret64
+	}
+	
+	parseFloat32 <- {
+		parseFloat64 f32
+	}
 
 	llMessage: hash withVars: {
 		intret <- (obj_int32 ptr)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/samples/numparse.tp	Sat Apr 04 12:34:43 2015 -0700
@@ -0,0 +1,7 @@
+#{
+	main <- {
+		print: "42: " . ("42" int32) . ", -42: " . ("-42" int32) . "\n"
+		print: "2147483647: " . ("2147483647" int32) . ", -2147483648: " . ("-2147483648" int32) . "\n"
+		print: "1.23456789: " . ("1.23456789" parseFloat64) . "\n"
+	}
+}