mirror of
https://github.com/matrix-construct/construct
synced 2024-11-12 13:01:07 +01:00
ircd::json: Add non-const iov::at(); minor cleanup.
This commit is contained in:
parent
d4c2ec6b22
commit
b69848b620
2 changed files with 29 additions and 7 deletions
|
@ -55,6 +55,7 @@ struct ircd::json::iov
|
|||
public:
|
||||
bool has(const string_view &key) const;
|
||||
const value &at(const string_view &key) const;
|
||||
value &at(const string_view &key);
|
||||
|
||||
iov() = default;
|
||||
|
||||
|
|
31
ircd/json.cc
31
ircd/json.cc
|
@ -987,15 +987,25 @@ ircd::json::serialized(const iov &iov)
|
|||
});
|
||||
}
|
||||
|
||||
bool
|
||||
ircd::json::iov::has(const string_view &key)
|
||||
const
|
||||
ircd::json::value &
|
||||
ircd::json::iov::at(const string_view &key)
|
||||
{
|
||||
return std::any_of(std::begin(*this), std::end(*this), [&key]
|
||||
const auto it
|
||||
{
|
||||
std::find_if(std::begin(*this), std::end(*this), [&key]
|
||||
(const auto &member)
|
||||
{
|
||||
return string_view{member.first} == key;
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
if(it == std::end(*this))
|
||||
throw not_found
|
||||
{
|
||||
"key '%s' not found", key
|
||||
};
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
const ircd::json::value &
|
||||
|
@ -1020,6 +1030,17 @@ const
|
|||
return it->second;
|
||||
}
|
||||
|
||||
bool
|
||||
ircd::json::iov::has(const string_view &key)
|
||||
const
|
||||
{
|
||||
return std::any_of(std::begin(*this), std::end(*this), [&key]
|
||||
(const auto &member)
|
||||
{
|
||||
return string_view{member.first} == key;
|
||||
});
|
||||
}
|
||||
|
||||
ircd::json::iov::add::add(iov &iov,
|
||||
member member)
|
||||
:node
|
||||
|
|
Loading…
Reference in a new issue