aboutsummaryrefslogtreecommitdiff
path: root/builtins/nums.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtins/nums.c')
-rw-r--r--builtins/nums.c16
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) {