Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
VariantAsImpl.hpp
00001 // ArduinoJson - arduinojson.org 00002 // Copyright Benoit Blanchon 2014-2021 00003 // MIT License 00004 00005 #pragma once 00006 00007 #include <ArduinoJson/Strings/IsWriteableString.hpp> 00008 #include <ArduinoJson/Variant/VariantFunctions.hpp> 00009 #include <ArduinoJson/Variant/VariantRef.hpp> 00010 00011 namespace ARDUINOJSON_NAMESPACE { 00012 00013 template <typename T> 00014 inline typename enable_if<is_same<ArrayConstRef, T>::value, T>::type variantAs( 00015 const VariantData* _data) { 00016 return ArrayConstRef(variantAsArray(_data)); 00017 } 00018 00019 template <typename T> 00020 inline typename enable_if<is_same<ObjectConstRef, T>::value, T>::type variantAs( 00021 const VariantData* _data) { 00022 return ObjectConstRef(variantAsObject(_data)); 00023 } 00024 00025 template <typename T> 00026 inline typename enable_if<is_same<VariantConstRef, T>::value, T>::type 00027 variantAs(const VariantData* _data) { 00028 return VariantConstRef(_data); 00029 } 00030 00031 template <typename T> 00032 inline typename enable_if<IsWriteableString<T>::value, T>::type variantAs( 00033 const VariantData* _data) { 00034 const char* cstr = _data != 0 ? _data->asString() : 0; 00035 if (cstr) 00036 return T(cstr); 00037 T s; 00038 serializeJson(VariantConstRef(_data), s); 00039 return s; 00040 } 00041 00042 template <> 00043 inline ArrayRef variantAs<ArrayRef>(VariantData* data, MemoryPool* pool) { 00044 return ArrayRef(pool, data != 0 ? data->asArray() : 0); 00045 } 00046 00047 template <> 00048 inline ObjectRef variantAs<ObjectRef>(VariantData* data, MemoryPool* pool) { 00049 return ObjectRef(pool, data != 0 ? data->asObject() : 0); 00050 } 00051 00052 template <> 00053 inline VariantRef variantAs<VariantRef>(VariantData* data, MemoryPool* pool) { 00054 return VariantRef(pool, data); 00055 } 00056 00057 } // namespace ARDUINOJSON_NAMESPACE
Generated on Wed Jul 13 2022 01:10:37 by
1.7.2