From 90338abe6de3407799047736a704abd819b547ad Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 22 May 2021 23:11:28 +0200 Subject: [PATCH] Add bitsery trait for Boost.Container small_vector I was going to implement these myself since we don't need them to be contiguous like Boost's implementation is, but this is much easier of course. --- src/common/bitsery/traits/small-vector.h | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/common/bitsery/traits/small-vector.h diff --git a/src/common/bitsery/traits/small-vector.h b/src/common/bitsery/traits/small-vector.h new file mode 100644 index 00000000..d3c4126a --- /dev/null +++ b/src/common/bitsery/traits/small-vector.h @@ -0,0 +1,44 @@ +// yabridge: a Wine VST bridge +// Copyright (C) 2020-2021 Robbert van der Helm +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include +#include +#include + +namespace bitsery { +namespace traits { + +template +struct ContainerTraits> + : public StdContainer, + true, + true> { + // Unlike `std::vector`, I'm pretty sure + // `boost::container::small_vector` is contiguous. So hopefully + // this assertion does its thing. + static_assert(boost::container::dtl::is_contiguous_container< + boost::container::small_vector>::value); +}; + +template +struct BufferAdapterTraits> + : public StdContainerForBufferAdapter< + boost::container::small_vector> {}; + +} // namespace traits +} // namespace bitsery