mirror of
https://github.com/matrix-construct/construct
synced 2024-06-02 18:18:56 +02:00
ircd::json::stack: Keep state for member append; null member if no append.
This commit is contained in:
parent
7df8a8a20c
commit
cf6fc070a7
|
@ -161,6 +161,7 @@ struct ircd::json::stack::member
|
|||
string_view name; ///< member name state
|
||||
object *co {nullptr}; ///< current child object
|
||||
array *ca {nullptr}; ///< current child array
|
||||
bool vc {false}; ///< value witnessed
|
||||
|
||||
void _pre_append();
|
||||
void _post_append();
|
||||
|
|
|
@ -608,6 +608,7 @@ ircd::json::stack::object::object(member &pm)
|
|||
assert(pm.ca == nullptr);
|
||||
pm.co = this;
|
||||
s->append("{"_sv);
|
||||
pm.vc |= true;
|
||||
}
|
||||
|
||||
ircd::json::stack::object::object(array &pa)
|
||||
|
@ -705,6 +706,7 @@ ircd::json::stack::array::array(member &pm)
|
|||
assert(pm.ca == nullptr);
|
||||
pm.ca = this;
|
||||
s->append("["_sv);
|
||||
pm.vc |= true;
|
||||
}
|
||||
|
||||
ircd::json::stack::array::array(array &pa)
|
||||
|
@ -862,6 +864,9 @@ noexcept
|
|||
s = nullptr;
|
||||
}};
|
||||
|
||||
if(!vc)
|
||||
s->append("null");
|
||||
|
||||
assert(co == nullptr);
|
||||
assert(ca == nullptr);
|
||||
assert(po);
|
||||
|
@ -890,11 +895,13 @@ ircd::json::stack::member::append(const json::value &value)
|
|||
void
|
||||
ircd::json::stack::member::_pre_append()
|
||||
{
|
||||
assert(!vc);
|
||||
}
|
||||
|
||||
void
|
||||
ircd::json::stack::member::_post_append()
|
||||
{
|
||||
vc |= true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in a new issue