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