16 return c >=
'0' && c <=
'9';
21 return c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\r' || c ==
'\f' || c ==
'\v';
26 if (!str)
return false;
33 if (*str ==
'\0')
return false;
35 bool negative =
false;
39 }
else if (*str ==
'+') {
43 if (*str ==
'\0' || !
isDigit(*str))
return false;
46 const fl::u32 max_div_10 = 214748364U;
47 const fl::u32 max_mod_10 = 7U;
48 const fl::u32 max_neg_div_10 = 214748364U;
49 const fl::u32 max_neg_mod_10 = 8U;
52 fl::u32 digit = *str -
'0';
56 if (
value > max_neg_div_10 || (
value == max_neg_div_10 && digit > max_neg_mod_10)) {
60 if (
value > max_div_10 || (
value == max_div_10 && digit > max_mod_10)) {
70 if (*str !=
'\0')
return false;
83 if (!str)
return false;
90 if (*str ==
'\0')
return false;
95 }
else if (*str ==
'-') {
99 if (*str ==
'\0' || !
isDigit(*str))
return false;
102 const fl::u32 max_div_10 = 429496729U;
103 const fl::u32 max_mod_10 = 5U;
105 while (*str &&
isDigit(*str)) {
106 fl::u32 digit = *str -
'0';
109 if (
value > max_div_10 || (
value == max_div_10 && digit > max_mod_10)) {
118 if (*str !=
'\0')
return false;
149 if (c ==
'\n')
break;
150 if (c ==
'\r')
continue;
203 return !token.empty();
237 if (parse_i32(token.
c_str(), temp) && temp >= -128 && temp <= 127) {
238 n =
static_cast<fl::i8>(temp);
252 if (parse_u32(token.
c_str(), temp) && temp <= 255) {
253 n =
static_cast<fl::u8>(temp);
267 if (parse_i32(token.
c_str(), temp) && temp >= -32768 && temp <= 32767) {
268 n =
static_cast<fl::i16
>(temp);
283 if (!parse_i32(token.
c_str(), n)) {
295 if (!parse_u32(token.
c_str(), n)) {
312 if (
fl::almost_equal(f, 0.0f) && token !=
"0" && token !=
"0.0" && token !=
"0." && token.
find(
"0") != 0) {
326 d =
static_cast<double>(f);
328 if (
fl::almost_equal(f, 0.0f) && token !=
"0" && token !=
"0.0" && token !=
"0." && token.
find(
"0") != 0) {
360 if (c ==
'\n')
break;
361 if (c ==
'\r')
continue;
363 char ch[2] = {
static_cast<char>(c),
'\0'};
379 return static_cast<int>(
static_cast<unsigned char>(
mBuffer[
mPos++]));
412 return static_cast<int>(
static_cast<unsigned char>(
mBuffer[
mPos]));
float toFloat() const FL_NO_EXCEPT
fl::size find(const char &value) const FL_NO_EXCEPT
const char * c_str() const FL_NO_EXCEPT
char mBuffer[BUFFER_SIZE]
istream_real & getline(string &str) FL_NO_EXCEPT
void skipWhitespace() FL_NO_EXCEPT
istream_real & putback(char c) FL_NO_EXCEPT
bool readToken(string &token) FL_NO_EXCEPT
static const fl::size BUFFER_SIZE
bool readLine() FL_NO_EXCEPT
istream_real & operator>>(string &str) FL_NO_EXCEPT
istream_real() FL_NO_EXCEPT=default
#define FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS
bool parse_i32(const char *str, fl::i32 &result) FL_NO_EXCEPT
bool isDigit(char c) FL_NO_EXCEPT
bool parse_u32(const char *str, fl::u32 &result) FL_NO_EXCEPT
bool isSpace(char c) FL_NO_EXCEPT
u8 u8 fract8 blur_amount FL_NO_EXCEPT
constexpr int type_rank< T >::value
constexpr bool almost_equal(T a, T b, U tolerance) FL_NO_EXCEPT
fl::optional< fl::string > readLine(char delimiter, char skipChar, fl::optional< u32 > timeoutMs) FL_NO_EXCEPT
FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS istream cin
expected< T, E > result
Alias for expected (Rust-style naming)
int available() FL_NO_EXCEPT
istream_real & cin_real() FL_NO_EXCEPT
Base definition for an LED controller.