Inverted dependency between MemoryPool and string adapters.

Inserted a null after each raw string in the pool.
This commit is contained in:
Benoit Blanchon
2020-07-08 09:38:27 +02:00
parent 7e58347fbe
commit 04c59985a1
25 changed files with 143 additions and 119 deletions

View File

@@ -119,11 +119,44 @@ inline bool variantSetOwnedString(VariantData *var, char *value) {
return true;
}
template <typename T>
inline bool variantSetOwnedString(VariantData *var, T value, MemoryPool *pool) {
template <typename TAdaptedString>
inline bool variantSetOwnedString(VariantData *var, TAdaptedString value,
MemoryPool *pool) {
return var != 0 && var->setOwnedString(value, pool);
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool,
storage_policies::decide_at_runtime) {
if (value.isStatic())
return variantSetString(var, value, pool,
storage_policies::store_by_address());
else
return variantSetString(var, value, pool,
storage_policies::store_by_copy());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool) {
return variantSetString(var, value, pool,
typename TAdaptedString::storage_policy());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *, storage_policies::store_by_address) {
return variantSetLinkedString(var, value.data());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool,
storage_policies::store_by_copy) {
return variantSetOwnedString(var, value, pool);
}
template <typename T>
inline bool variantSetInteger(VariantData *var, T value) {
ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T);