diff options
author | Antony Woods <acron1@gmail.com> | 2014-12-10 17:29:31 +0000 |
---|---|---|
committer | Antony Woods <acron1@gmail.com> | 2014-12-10 17:29:31 +0000 |
commit | c2f75a7de1eaa9a0e1a5a97b5fc1ee60c8c3a642 (patch) | |
tree | fed6ff698f211cca192e68d954c577cac9134a97 /include/json.h | |
parent | 693aac108de4dc62811b9a2737d895ada474cfb2 (diff) | |
parent | 21b027774e4c472d27d8726774aad1aaed95ea42 (diff) | |
download | crow-c2f75a7de1eaa9a0e1a5a97b5fc1ee60c8c3a642.tar.gz crow-c2f75a7de1eaa9a0e1a5a97b5fc1ee60c8c3a642.zip |
Merged upstream
Diffstat (limited to 'include/json.h')
-rw-r--r-- | include/json.h | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/include/json.h b/include/json.h index d79fe88..68f06a2 100644 --- a/include/json.h +++ b/include/json.h @@ -284,6 +284,15 @@ namespace crow return boost::lexical_cast<double>(start_, end_-start_); } + bool b() const + { +#ifndef CROW_JSON_NO_ERROR_CHECK + if (t() != type::True && t() != type::False) + throw std::runtime_error("value is not boolean"); +#endif + return t() == type::True; + } + void unescape() const { if (*(start_-1)) @@ -824,9 +833,9 @@ namespace crow return {};*/ break; case '.': - state = (NumberParsingState)"\7\7\7\4\7\7\7"[state]; + state = (NumberParsingState)"\7\7\4\4\7\7\7"[state]; /* - if (state == NumberParsingState::Digits) + if (state == NumberParsingState::Digits || state == NumberParsingState::ZeroFirst) { state = NumberParsingState::DigitsAfterPoints; } @@ -1134,7 +1143,23 @@ namespace crow return *this; } - wvalue& operator = (uint16_t value) + wvalue& operator = (unsigned short value) + { + reset(); + t_ = type::Number; + d = (double)value; + return *this; + } + + wvalue& operator = (short value) + { + reset(); + t_ = type::Number; + d = (double)value; + return *this; + } + + wvalue& operator = (long long value) { reset(); t_ = type::Number; @@ -1142,7 +1167,7 @@ namespace crow return *this; } - wvalue& operator = (int16_t value) + wvalue& operator = (long value) { reset(); t_ = type::Number; @@ -1150,7 +1175,7 @@ namespace crow return *this; } - wvalue& operator = (uint32_t value) + wvalue& operator = (int value) { reset(); t_ = type::Number; @@ -1158,7 +1183,7 @@ namespace crow return *this; } - wvalue& operator = (int32_t value) + wvalue& operator = (unsigned long long value) { reset(); t_ = type::Number; @@ -1166,7 +1191,7 @@ namespace crow return *this; } - wvalue& operator = (uint64_t value) + wvalue& operator = (unsigned long value) { reset(); t_ = type::Number; @@ -1174,7 +1199,7 @@ namespace crow return *this; } - wvalue& operator = (int64_t value) + wvalue& operator = (unsigned int value) { reset(); t_ = type::Number; |