68 {
70 if (
auto* p = val.
data.template ptr<bool>()) {
71 *out_value = *p;
73 }
74 if (
auto* p = val.
data.template ptr<i64>()) {
75 *out_value = (*p != 0);
77 " converted to bool " + (*out_value ? "true" : "false"));
79 }
80 if (
auto* p = val.
data.template ptr<float>()) {
81#if FL_PLATFORM_HAS_LARGE_MEMORY
82 *out_value = (*p != 0.0f);
84 " converted to bool " + (*out_value ? "true" : "false"));
85#else
86 (void)p;
87 *out_value = false;
88 result.setError(
"float -> bool not supported on Low-memory");
89#endif
91 }
92 if (
auto* p = val.
data.template ptr<fl::string>()) {
93 if (*p == "true" || *p == "1" || *p == "yes") {
94 *out_value = true;
95 result.addWarning(fl::string(
"string '") + *p +
"' parsed as bool true");
96 } else if (*p == "false" || *p == "0" || *p == "no") {
97 *out_value = false;
98 result.addWarning(fl::string(
"string '") + *p +
"' parsed as bool false");
99 } else {
100 result.setError(fl::string(
"cannot parse string '") + *p +
"' as bool");
101 *out_value = false;
102 }
104 }
105 if (val.
data.template ptr<fl::nullptr_t>()) {
106 result.setError(
"cannot convert null to bool");
107 *out_value = false;
109 }
110 result.setError(
"cannot convert array or object to bool");
111 *out_value = false;
113}
expected< T, E > result
Alias for expected (Rust-style naming)
string to_string(T value) FL_NO_EXCEPT