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 { | ||||
|   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