From f59a51625690d40b9bf481c1f8b158434e9ca88e Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Wed, 14 Sep 2016 10:30:48 -0400 Subject: [PATCH] define to/from variant for boost interprocess deque and vector --- include/fc/interprocess/container.hpp | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 include/fc/interprocess/container.hpp diff --git a/include/fc/interprocess/container.hpp b/include/fc/interprocess/container.hpp new file mode 100644 index 0000000..27359fc --- /dev/null +++ b/include/fc/interprocess/container.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include +#include + +#include +#include +#include +#include +#include + + +namespace fc { + + namespace bip = boost::interprocess; + + template + void to_variant( const bip::deque< T... >& t, fc::variant& v ) { + std::vector vars(t.size()); + for( size_t i = 0; i < t.size(); ++i ) { + vars[i] = t[i]; + } + v = std::move(vars); + } + + template + void from_variant( const fc::variant& v, bip::deque< T, A... >& d ) { + const variants& vars = v.get_array(); + d.clear(); + d.resize( vars.size() ); + for( uint32_t i = 0; i < vars.size(); ++i ) { + from_variant( vars[i], d[i] ); + } + } + + template + void to_variant( const bip::vector< T... >& t, fc::variant& v ) { + std::vector vars(t.size()); + for( size_t i = 0; i < t.size(); ++i ) { + vars[i] = t[i]; + } + v = std::move(vars); + } + + template + void from_variant( const fc::variant& v, bip::vector< T, A... >& d ) { + const variants& vars = v.get_array(); + d.clear(); + d.resize( vars.size() ); + for( uint32_t i = 0; i < vars.size(); ++i ) { + from_variant( vars[i], d[i] ); + } + } +}