diff --git a/include/ircd/buffer.h b/include/ircd/buffer.h index 467dc0d5b..796496667 100644 --- a/include/ircd/buffer.h +++ b/include/ircd/buffer.h @@ -81,6 +81,9 @@ namespace ircd::buffer template it rend(const buffer &buffer); // Single buffer tools + template bool null(const buffer &buffer); + template bool empty(const buffer &buffer); + template bool operator!(const buffer &buffer); template size_t size(const buffer &buffer); template const it &data(const buffer &buffer); template size_t consume(buffer &buffer, const size_t &bytes); @@ -569,6 +572,27 @@ ircd::buffer::size(const buffer &buffer) return std::distance(get<0>(buffer), get<1>(buffer)); } +template +bool +ircd::buffer::operator!(const buffer &buffer) +{ + return empty(buffer); +} + +template +bool +ircd::buffer::empty(const buffer &buffer) +{ + return null(buffer) || !std::distance(get<0>(buffer), get<1>(buffer)); +} + +template +bool +ircd::buffer::null(const buffer &buffer) +{ + return get<0>(buffer) == nullptr; +} + template it ircd::buffer::rend(const buffer &buffer)