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