forked from bblanchon/ArduinoJson
Add namespace StringStoragePolicy
This commit is contained in:
@ -209,8 +209,8 @@ class MemoryPool {
|
||||
};
|
||||
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
bool storeString(MemoryPool* pool, TAdaptedString str, CopyStringStoragePolicy,
|
||||
TCallback callback) {
|
||||
bool storeString(MemoryPool* pool, TAdaptedString str,
|
||||
StringStoragePolicy::Copy, TCallback callback) {
|
||||
const char* copy = pool->saveString(str);
|
||||
String storedString(copy, str.size(), String::Copied);
|
||||
callback(storedString);
|
||||
@ -218,7 +218,7 @@ bool storeString(MemoryPool* pool, TAdaptedString str, CopyStringStoragePolicy,
|
||||
}
|
||||
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
bool storeString(MemoryPool*, TAdaptedString str, LinkStringStoragePolicy,
|
||||
bool storeString(MemoryPool*, TAdaptedString str, StringStoragePolicy::Link,
|
||||
TCallback callback) {
|
||||
String storedString(str.data(), str.size(), String::Linked);
|
||||
callback(storedString);
|
||||
@ -227,11 +227,11 @@ bool storeString(MemoryPool*, TAdaptedString str, LinkStringStoragePolicy,
|
||||
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
bool storeString(MemoryPool* pool, TAdaptedString str,
|
||||
LinkOrCopyStringStoragePolicy policy, TCallback callback) {
|
||||
StringStoragePolicy::LinkOrCopy policy, TCallback callback) {
|
||||
if (policy.link)
|
||||
return storeString(pool, str, LinkStringStoragePolicy(), callback);
|
||||
return storeString(pool, str, StringStoragePolicy::Link(), callback);
|
||||
else
|
||||
return storeString(pool, str, CopyStringStoragePolicy(), callback);
|
||||
return storeString(pool, str, StringStoragePolicy::Copy(), callback);
|
||||
}
|
||||
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
|
@ -61,8 +61,8 @@ class FlashString {
|
||||
::memcpy_P(p, s._str, n);
|
||||
}
|
||||
|
||||
CopyStringStoragePolicy storagePolicy() {
|
||||
return CopyStringStoragePolicy();
|
||||
StringStoragePolicy::Copy storagePolicy() {
|
||||
return StringStoragePolicy::Copy();
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -15,8 +15,9 @@ class JsonStringAdapter : public SizedRamString {
|
||||
JsonStringAdapter(const String& s)
|
||||
: SizedRamString(s.c_str(), s.size()), _linked(s.isLinked()) {}
|
||||
|
||||
LinkOrCopyStringStoragePolicy storagePolicy() {
|
||||
return LinkOrCopyStringStoragePolicy(_linked);
|
||||
StringStoragePolicy::LinkOrCopy storagePolicy() {
|
||||
StringStoragePolicy::LinkOrCopy policy = {_linked};
|
||||
return policy;
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -49,8 +49,8 @@ class ZeroTerminatedRamString {
|
||||
return stringCompare(a, b) == 0;
|
||||
}
|
||||
|
||||
CopyStringStoragePolicy storagePolicy() {
|
||||
return CopyStringStoragePolicy();
|
||||
StringStoragePolicy::Copy storagePolicy() {
|
||||
return StringStoragePolicy::Copy();
|
||||
}
|
||||
|
||||
protected:
|
||||
@ -82,8 +82,8 @@ class StaticStringAdapter : public ZeroTerminatedRamString {
|
||||
public:
|
||||
StaticStringAdapter(const char* str) : ZeroTerminatedRamString(str) {}
|
||||
|
||||
LinkStringStoragePolicy storagePolicy() {
|
||||
return LinkStringStoragePolicy();
|
||||
StringStoragePolicy::Link storagePolicy() {
|
||||
return StringStoragePolicy::Link();
|
||||
}
|
||||
};
|
||||
|
||||
@ -115,8 +115,8 @@ class SizedRamString {
|
||||
return _str;
|
||||
}
|
||||
|
||||
CopyStringStoragePolicy storagePolicy() {
|
||||
return CopyStringStoragePolicy();
|
||||
StringStoragePolicy::Copy storagePolicy() {
|
||||
return StringStoragePolicy::Copy();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -6,14 +6,13 @@
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
struct LinkStringStoragePolicy {};
|
||||
|
||||
struct CopyStringStoragePolicy {};
|
||||
|
||||
struct LinkOrCopyStringStoragePolicy {
|
||||
LinkOrCopyStringStoragePolicy(bool l) : link(l) {}
|
||||
namespace StringStoragePolicy {
|
||||
|
||||
struct Link {};
|
||||
struct Copy {};
|
||||
struct LinkOrCopy {
|
||||
bool link;
|
||||
};
|
||||
} // namespace StringStoragePolicy
|
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
||||
|
Reference in New Issue
Block a user