From 81b6c7b0036f43526daf6f10264e54b53edae4be Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 1 Jul 2022 09:48:48 -0700 Subject: [PATCH] ircd::buffer: Hoist null_buffer to inline variable; move buffers typedefs. --- include/ircd/buffer/buffer.h | 23 +++++++++++++++++------ include/ircd/buffer/buffers.h | 6 ++++++ ircd/net.cc | 12 ------------ 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/include/ircd/buffer/buffer.h b/include/ircd/buffer/buffer.h index 4e306e3a2..abf6f30bc 100644 --- a/include/ircd/buffer/buffer.h +++ b/include/ircd/buffer/buffer.h @@ -46,17 +46,14 @@ namespace ircd::buffer template using fixed_const_buffer = fixed_buffer; template using fixed_mutable_buffer = fixed_buffer; - template class I> using const_buffers = I; - template class I> using mutable_buffers = I; using unique_const_buffer = unique_buffer; using unique_mutable_buffer = unique_buffer; using shared_const_buffer = shared_buffer; using shared_mutable_buffer = shared_buffer; - // Preconstructed null buffers + // Convenience null buffer extern const mutable_buffer null_buffer; - extern const ilist null_buffers; // Single buffer iteration of contents template const it &begin(const buffer &buffer); @@ -121,9 +118,11 @@ namespace ircd using buffer::unique_mutable_buffer; using buffer::shared_const_buffer; using buffer::shared_mutable_buffer; + using buffer::null_buffer; - using buffer::const_buffers; - using buffer::mutable_buffers; + using buffers::const_buffers; + using buffers::mutable_buffers; + using buffers::null_buffers; using buffer::size; using buffer::data; @@ -351,3 +350,15 @@ ircd::buffer::begin(const buffer &buffer) { return get<0>(buffer); } + +inline decltype(ircd::buffer::null_buffer) +ircd::buffer::null_buffer +{ + nullptr, nullptr +}; + +inline decltype(ircd::buffers::null_buffers) +ircd::buffers::null_buffers +{ + { null_buffer } +}; diff --git a/include/ircd/buffer/buffers.h b/include/ircd/buffer/buffers.h index b6e2c814e..8afbdced6 100644 --- a/include/ircd/buffer/buffers.h +++ b/include/ircd/buffer/buffers.h @@ -13,6 +13,12 @@ namespace ircd::buffer::buffers { + template class I> using const_buffers = I; + template class I> using mutable_buffers = I; + + // Convenience null buffers + extern const ilist null_buffers; + // Iterable of buffers tools template class I, class T> size_t size(const I &buffers); template class I, class T> size_t copy(const mutable_buffer &, const I &buffer); diff --git a/ircd/net.cc b/ircd/net.cc index f0e4810fa..0792aa742 100644 --- a/ircd/net.cc +++ b/ircd/net.cc @@ -3204,18 +3204,6 @@ ircd::net::string(const mutable_buffer &out, // buffer.h - provide definition for the null buffers and asio conversion // -const ircd::buffer::mutable_buffer -ircd::buffer::null_buffer -{ - nullptr, nullptr -}; - -const ircd::ilist -ircd::buffer::null_buffers -{{ - null_buffer -}}; - [[gnu::visibility("protected")]] ircd::buffer::mutable_buffer::operator boost::asio::mutable_buffer()