Added latest ArduinoJSON library to third-Party software.pull/54/head
parent
1e53e14416
commit
f458bbb8c1
@ -0,0 +1,14 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <class = void> |
||||
struct make_void { |
||||
typedef void type; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,52 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <Arduino.h> |
||||
|
||||
#include <ArduinoJson/Polyfills/safe_strcmp.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter< ::String> { |
||||
public: |
||||
StringAdapter(const ::String& str) : _str(&str) {} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy(p, _str->c_str(), n); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
// Arduino's String::c_str() can return NULL
|
||||
return !_str->c_str(); |
||||
} |
||||
|
||||
int compare(const char* other) const { |
||||
// Arduino's String::c_str() can return NULL
|
||||
const char* me = _str->c_str(); |
||||
return safe_strcmp(me, other); |
||||
} |
||||
|
||||
size_t size() const { |
||||
return _str->length(); |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
const ::String* _str; |
||||
}; |
||||
|
||||
template <> |
||||
class StringAdapter< ::StringSumHelper> : public StringAdapter< ::String> { |
||||
public: |
||||
StringAdapter< ::StringSumHelper>(const ::String& s) |
||||
: StringAdapter< ::String>(s) {} |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,51 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <stddef.h> // size_t |
||||
#include <string.h> // strcmp |
||||
|
||||
#include <ArduinoJson/Polyfills/safe_strcmp.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter<const char*> { |
||||
public: |
||||
StringAdapter(const char* str = 0) : _str(str) {} |
||||
|
||||
int compare(const char* other) const { |
||||
return safe_strcmp(_str, other); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return !_str; |
||||
} |
||||
|
||||
size_t size() const { |
||||
if (!_str) |
||||
return 0; |
||||
return strlen(_str); |
||||
} |
||||
|
||||
const char* data() const { |
||||
return _str; |
||||
} |
||||
|
||||
typedef storage_policies::store_by_address storage_policy; |
||||
|
||||
protected: |
||||
const char* _str; |
||||
}; |
||||
|
||||
template <int N> |
||||
class StringAdapter<const char[N]> : public StringAdapter<const char*> { |
||||
public: |
||||
StringAdapter<const char[N]>(const char* s) : StringAdapter<const char*>(s) {} |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,48 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Polyfills/pgmspace.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter<const __FlashStringHelper*> { |
||||
public: |
||||
StringAdapter(const __FlashStringHelper* str) : _str(str) {} |
||||
|
||||
int compare(const char* other) const { |
||||
if (!other && !_str) |
||||
return 0; |
||||
if (!_str) |
||||
return -1; |
||||
if (!other) |
||||
return 1; |
||||
return -strcmp_P(other, reinterpret_cast<const char*>(_str)); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return !_str; |
||||
} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy_P(p, reinterpret_cast<const char*>(_str), n); |
||||
} |
||||
|
||||
size_t size() const { |
||||
if (!_str) |
||||
return 0; |
||||
return strlen_P(reinterpret_cast<const char*>(_str)); |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
const __FlashStringHelper* _str; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,27 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Strings/Adapters/RamStringAdapter.hpp> |
||||
#include <ArduinoJson/Strings/String.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter<String> : public StringAdapter<char*> { |
||||
public: |
||||
StringAdapter(const String& str) |
||||
: StringAdapter<char*>(str.c_str()), _isStatic(str.isStatic()) {} |
||||
|
||||
bool isStatic() const { |
||||
return _isStatic; |
||||
} |
||||
|
||||
typedef storage_policies::decide_at_runtime storage_policy; |
||||
|
||||
private: |
||||
bool _isStatic; |
||||
}; |
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,29 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Polyfills/type_traits.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <typename TChar> |
||||
class StringAdapter<TChar*, false, |
||||
typename enable_if<sizeof(TChar) == 1 && |
||||
!is_same<TChar, void>::value>::type> |
||||
: public StringAdapter<const char*> { |
||||
public: |
||||
StringAdapter(const TChar* str) |
||||
: StringAdapter<const char*>(reinterpret_cast<const char*>(str)) {} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy(p, _str, n); |
||||
} |
||||
|
||||
typedef ARDUINOJSON_NAMESPACE::storage_policies::store_by_copy storage_policy; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,48 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Namespace.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter<const __FlashStringHelper*, true> { |
||||
public: |
||||
StringAdapter(const __FlashStringHelper* str, size_t sz) |
||||
: _str(str), _size(sz) {} |
||||
|
||||
int compare(const char* other) const { |
||||
if (!other && !_str) |
||||
return 0; |
||||
if (!_str) |
||||
return -1; |
||||
if (!other) |
||||
return 1; |
||||
return -strncmp_P(other, reinterpret_cast<const char*>(_str), _size); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return !_str; |
||||
} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy_P(p, reinterpret_cast<const char*>(_str), n); |
||||
} |
||||
|
||||
size_t size() const { |
||||
return _size; |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
const __FlashStringHelper* _str; |
||||
size_t _size; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,43 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Namespace.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
#include <string.h> // strcmp |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <typename TChar> |
||||
class StringAdapter<TChar*, true> { |
||||
public: |
||||
StringAdapter(const char* str, size_t n) : _str(str), _size(n) {} |
||||
|
||||
int compare(const char* other) const { |
||||
return safe_strncmp(_str, other, _size); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return !_str; |
||||
} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy(p, _str, n); |
||||
} |
||||
|
||||
size_t size() const { |
||||
return _size; |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
const char* _str; |
||||
size_t _size; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,46 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Namespace.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
#include <string> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <typename TCharTraits, typename TAllocator> |
||||
class StringAdapter<std::basic_string<char, TCharTraits, TAllocator> > { |
||||
public: |
||||
typedef std::basic_string<char, TCharTraits, TAllocator> string_type; |
||||
|
||||
StringAdapter(const string_type& str) : _str(&str) {} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy(p, _str->c_str(), n); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return false; |
||||
} |
||||
|
||||
int compare(const char* other) const { |
||||
if (!other) |
||||
return 1; |
||||
return _str->compare(other); |
||||
} |
||||
|
||||
size_t size() const { |
||||
return _str->size(); |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
const string_type* _str; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,44 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Namespace.hpp> |
||||
#include <ArduinoJson/Strings/StoragePolicy.hpp> |
||||
#include <ArduinoJson/Strings/StringAdapter.hpp> |
||||
|
||||
#include <string_view> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <> |
||||
class StringAdapter<std::string_view> { |
||||
public: |
||||
StringAdapter(std::string_view str) : _str(str) {} |
||||
|
||||
void copyTo(char* p, size_t n) const { |
||||
memcpy(p, _str.data(), n); |
||||
} |
||||
|
||||
bool isNull() const { |
||||
return false; |
||||
} |
||||
|
||||
int compare(const char* other) const { |
||||
if (!other) |
||||
return 1; |
||||
return _str.compare(other); |
||||
} |
||||
|
||||
size_t size() const { |
||||
return _str.size(); |
||||
} |
||||
|
||||
typedef storage_policies::store_by_copy storage_policy; |
||||
|
||||
private: |
||||
std::string_view _str; |
||||
}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -0,0 +1,32 @@ |
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once |
||||
|
||||
#include <ArduinoJson/Polyfills/type_traits.hpp> |
||||
|
||||
namespace ARDUINOJSON_NAMESPACE { |
||||
|
||||
template <typename T, bool bounded = false, typename Enable = void> |
||||
class StringAdapter; |
||||
|
||||
template <typename T> |
||||
inline StringAdapter<T, false> adaptString(const T& str) { |
||||
return StringAdapter<T, false>(str); |
||||
} |
||||
|
||||
template <typename T> |
||||
inline StringAdapter<T, true> adaptString(const T& str, size_t sz) { |
||||
return StringAdapter<T, true>(str, sz); |
||||
} |
||||
|
||||
template <typename T, typename Enable = void> |
||||
struct IsString : false_type {}; |
||||
|
||||
template <typename T> |
||||
struct IsString< |
||||
T, typename make_void<typename StringAdapter<T>::storage_policy>::type> |
||||
: true_type {}; |
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
Loading…
Reference in new issue