forked from bblanchon/ArduinoJson
Optimized JsonVariant::is<float>()
This commit is contained in:
@ -16,15 +16,18 @@ namespace ARDUINOJSON_NAMESPACE {
|
||||
enum {
|
||||
VALUE_MASK = 0x7F,
|
||||
|
||||
VALUE_IS_OWNED = 0x01,
|
||||
OWNED_VALUE_BIT = 0x01,
|
||||
VALUE_IS_NULL = 0,
|
||||
VALUE_IS_LINKED_RAW = 0x02,
|
||||
VALUE_IS_OWNED_RAW = 0x03,
|
||||
VALUE_IS_LINKED_STRING = 0x04,
|
||||
VALUE_IS_OWNED_STRING = 0x05,
|
||||
|
||||
// CAUTION: no VALUE_IS_OWNED below
|
||||
// CAUTION: no OWNED_VALUE_BIT below
|
||||
|
||||
VALUE_IS_BOOLEAN = 0x06,
|
||||
|
||||
NUMBER_BIT = 0x08,
|
||||
VALUE_IS_UNSIGNED_INTEGER = 0x08,
|
||||
VALUE_IS_SIGNED_INTEGER = 0x0A,
|
||||
VALUE_IS_FLOAT = 0x0C,
|
||||
@ -33,7 +36,7 @@ enum {
|
||||
VALUE_IS_OBJECT = 0x20,
|
||||
VALUE_IS_ARRAY = 0x40,
|
||||
|
||||
KEY_IS_OWNED = 0x80
|
||||
OWNED_KEY_BIT = 0x80
|
||||
};
|
||||
|
||||
struct RawData {
|
||||
|
@ -141,8 +141,7 @@ class VariantData {
|
||||
}
|
||||
|
||||
bool isFloat() const {
|
||||
return type() == VALUE_IS_FLOAT || type() == VALUE_IS_UNSIGNED_INTEGER ||
|
||||
type() == VALUE_IS_SIGNED_INTEGER;
|
||||
return (_flags & NUMBER_BIT) != 0;
|
||||
}
|
||||
|
||||
bool isString() const {
|
||||
@ -308,7 +307,7 @@ class VariantData {
|
||||
}
|
||||
|
||||
void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance) {
|
||||
if (_flags & VALUE_IS_OWNED)
|
||||
if (_flags & OWNED_VALUE_BIT)
|
||||
_content.asString += stringDistance;
|
||||
if (_flags & COLLECTION_MASK)
|
||||
_content.asCollection.movePointers(stringDistance, variantDistance);
|
||||
@ -320,7 +319,7 @@ class VariantData {
|
||||
|
||||
private:
|
||||
void setType(uint8_t t) {
|
||||
_flags &= KEY_IS_OWNED;
|
||||
_flags &= OWNED_KEY_BIT;
|
||||
_flags |= t;
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ class VariantSlot {
|
||||
|
||||
void setKey(const char* k, storage_policies::store_by_copy) {
|
||||
ARDUINOJSON_ASSERT(k != NULL);
|
||||
_flags |= KEY_IS_OWNED;
|
||||
_flags |= OWNED_KEY_BIT;
|
||||
_key = k;
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ class VariantSlot {
|
||||
}
|
||||
|
||||
bool ownsKey() const {
|
||||
return (_flags & KEY_IS_OWNED) != 0;
|
||||
return (_flags & OWNED_KEY_BIT) != 0;
|
||||
}
|
||||
|
||||
void clear() {
|
||||
@ -104,9 +104,9 @@ class VariantSlot {
|
||||
}
|
||||
|
||||
void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance) {
|
||||
if (_flags & KEY_IS_OWNED)
|
||||
if (_flags & OWNED_KEY_BIT)
|
||||
_key += stringDistance;
|
||||
if (_flags & VALUE_IS_OWNED)
|
||||
if (_flags & OWNED_VALUE_BIT)
|
||||
_content.asString += stringDistance;
|
||||
if (_flags & COLLECTION_MASK)
|
||||
_content.asCollection.movePointers(stringDistance, variantDistance);
|
||||
|
Reference in New Issue
Block a user