FastLED 3.10.6
Loading...
Searching...
No Matches

◆ json_convert_to_bool_core()

FL_NO_INLINE TypeConversionResult fl::detail::json_convert_to_bool_core ( const json_value & val,
bool * out_value )

Definition at line 67 of file json_dispatch.cpp.hpp.

68 {
70 if (auto* p = val.data.template ptr<bool>()) {
71 *out_value = *p;
72 return result;
73 }
74 if (auto* p = val.data.template ptr<i64>()) {
75 *out_value = (*p != 0);
76 result.addWarning(fl::string("int ") + fl::to_string(*p) +
77 " converted to bool " + (*out_value ? "true" : "false"));
78 return result;
79 }
80 if (auto* p = val.data.template ptr<float>()) {
81#if FL_PLATFORM_HAS_LARGE_MEMORY
82 *out_value = (*p != 0.0f);
83 result.addWarning(fl::string("float ") + fl::to_string(*p, 6) +
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
90 return result;
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 }
103 return result;
104 }
105 if (val.data.template ptr<fl::nullptr_t>()) {
106 result.setError("cannot convert null to bool");
107 *out_value = false;
108 return result;
109 }
110 result.setError("cannot convert array or object to bool");
111 *out_value = false;
112 return result;
113}
expected< T, E > result
Alias for expected (Rust-style naming)
Definition result.h:31
string to_string(T value) FL_NO_EXCEPT
Definition string.h:459
variant_t data
Definition types.h:760

References fl::FL_NO_EXCEPT, and fl::to_string().

Referenced by fl::detail::JsonToType< bool, void >::convert().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: