diff options
Diffstat (limited to 'builtins/nums.c')
| -rw-r--r-- | builtins/nums.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/builtins/nums.c b/builtins/nums.c index 90eb75ce..cfa14191 100644 --- a/builtins/nums.c +++ b/builtins/nums.c @@ -66,12 +66,14 @@ public CONSTFUNC double Num$mix(double amount, double x, double y) { return (1.0-amount)*x + amount*y; } -public double Num$from_text(Text_t text, bool *success) { +public OptionalNum_t Num$from_text(Text_t text) { const char *str = Text$as_c_string(text); char *end = NULL; double d = strtod(str, &end); - if (success) *success = (end > str && end[0] == '\0'); - return d; + if (end > str && end[0] == '\0') + return d; + else + return nan("null"); } public double Num$nan(Text_t tag) { @@ -145,12 +147,14 @@ public CONSTFUNC float Num32$mix(float amount, float x, float y) { return (1.0f-amount)*x + amount*y; } -public float Num32$from_text(Text_t text, bool *success) { +public OptionalNum32_t Num32$from_text(Text_t text) { const char *str = Text$as_c_string(text); char *end = NULL; double d = strtod(str, &end); - if (success) *success = (end > str && end[0] == '\0'); - return (float)d; + if (end > str && end[0] == '\0') + return d; + else + return nan("null"); } public float Num32$nan(Text_t tag) { |
