| 192 | |
| 193 | template <typename T> |
| 194 | T asFloat(const ResourceManager* resources) const { |
| 195 | static_assert(is_floating_point<T>::value, "T must be a floating point"); |
| 196 | #if ARDUINOJSON_USE_EXTENSIONS |
| 197 | auto extension = getExtension(resources); |
| 198 | #else |
| 199 | (void)resources; // silence warning |
| 200 | #endif |
| 201 | const char* str = nullptr; |
| 202 | switch (type_) { |
| 203 | case VariantType::Boolean: |
| 204 | return static_cast<T>(content_.asBoolean); |
| 205 | case VariantType::Uint32: |
| 206 | return static_cast<T>(content_.asUint32); |
| 207 | case VariantType::Int32: |
| 208 | return static_cast<T>(content_.asInt32); |
| 209 | #if ARDUINOJSON_USE_LONG_LONG |
| 210 | case VariantType::Uint64: |
| 211 | return static_cast<T>(extension->asUint64); |
| 212 | case VariantType::Int64: |
| 213 | return static_cast<T>(extension->asInt64); |
| 214 | #endif |
| 215 | case VariantType::TinyString: |
| 216 | str = content_.asTinyString; |
| 217 | break; |
| 218 | case VariantType::LinkedString: |
| 219 | str = content_.asLinkedString; |
| 220 | break; |
| 221 | case VariantType::OwnedString: |
| 222 | str = content_.asOwnedString->data; |
| 223 | break; |
| 224 | case VariantType::Float: |
| 225 | return static_cast<T>(content_.asFloat); |
| 226 | #if ARDUINOJSON_USE_DOUBLE |
| 227 | case VariantType::Double: |
| 228 | return static_cast<T>(extension->asDouble); |
| 229 | #endif |
| 230 | default: |
| 231 | return 0.0; |
| 232 | } |
| 233 | |
| 234 | ARDUINOJSON_ASSERT(str != nullptr); |
| 235 | return parseNumber<T>(str); |
| 236 | } |
| 237 | |
| 238 | template <typename T> |
| 239 | T asIntegral(const ResourceManager* resources) const { |
nothing calls this directly
no outgoing calls
no test coverage detected