Add namespace StringStoragePolicy

This commit is contained in:
Benoit Blanchon
2022-10-26 10:41:42 +02:00
parent b27990f780
commit 057956225c
5 changed files with 22 additions and 22 deletions

View File

@ -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>

View File

@ -61,8 +61,8 @@ class FlashString {
::memcpy_P(p, s._str, n);
}
CopyStringStoragePolicy storagePolicy() {
return CopyStringStoragePolicy();
StringStoragePolicy::Copy storagePolicy() {
return StringStoragePolicy::Copy();
}
private:

View File

@ -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:

View File

@ -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:

View File

@ -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