MCPcopy Create free account
hub / github.com/bblanchon/ArduinoJson / asIntegral

Method asIntegral

src/ArduinoJson/Variant/VariantData.hpp:239–281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

237
238 template <typename T>
239 T asIntegral(const ResourceManager* resources) const {
240 static_assert(is_integral<T>::value, "T must be an integral type");
241#if ARDUINOJSON_USE_EXTENSIONS
242 auto extension = getExtension(resources);
243#else
244 (void)resources; // silence warning
245#endif
246 const char* str = nullptr;
247 switch (type_) {
248 case VariantType::Boolean:
249 return content_.asBoolean;
250 case VariantType::Uint32:
251 return convertNumber<T>(content_.asUint32);
252 case VariantType::Int32:
253 return convertNumber<T>(content_.asInt32);
254#if ARDUINOJSON_USE_LONG_LONG
255 case VariantType::Uint64:
256 return convertNumber<T>(extension->asUint64);
257 case VariantType::Int64:
258 return convertNumber<T>(extension->asInt64);
259#endif
260 case VariantType::TinyString:
261 str = content_.asTinyString;
262 break;
263 case VariantType::LinkedString:
264 str = content_.asLinkedString;
265 break;
266 case VariantType::OwnedString:
267 str = content_.asOwnedString->data;
268 break;
269 case VariantType::Float:
270 return convertNumber<T>(content_.asFloat);
271#if ARDUINOJSON_USE_DOUBLE
272 case VariantType::Double:
273 return convertNumber<T>(extension->asDouble);
274#endif
275 default:
276 return 0;
277 }
278
279 ARDUINOJSON_ASSERT(str != nullptr);
280 return parseNumber<T>(str);
281 }
282
283 ObjectData* asObject() {
284 return isObject() ? &content_.asObject : 0;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected