# HG changeset patch # User Michael Pavone # Date 1428176083 25200 # Node ID 74cab9b5f2a484c9608d27f1955b24ed11e6303b # Parent 1458c069c715ef6c52ec4a93dbe0813403d4347b Added parseFloat64 and parseFloat32 along with a sample that exercises number parsing from a string diff -r 1458c069c715 -r 74cab9b5f2a4 modules/string.tp --- 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) diff -r 1458c069c715 -r 74cab9b5f2a4 samples/numparse.tp --- /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" + } +}