From 845f8388c40bf78587e4bf98c14cedb9bf992e5a Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Mon, 1 Feb 2016 18:29:30 -0500 Subject: [PATCH] add deque support to variant --- include/fc/variant.hpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/include/fc/variant.hpp b/include/fc/variant.hpp index e8596cd..513aac3 100644 --- a/include/fc/variant.hpp +++ b/include/fc/variant.hpp @@ -108,6 +108,11 @@ namespace fc template void from_variant( const variant& var, std::unordered_set& vo ); + template + void to_variant( const std::deque& var, variant& vo ); + template + void from_variant( const variant& var, std::deque& vo ); + template void to_variant( const fc::flat_set& var, variant& vo ); template @@ -452,6 +457,28 @@ namespace fc vo.insert( itr->as() ); } + /** @ingroup Serializable */ + template + void from_variant( const variant& var, std::deque& tmp ) + { + const variants& vars = var.get_array(); + tmp.clear(); + tmp.reserve( vars.size() ); + for( auto itr = vars.begin(); itr != vars.end(); ++itr ) + tmp.push_back( itr->as() ); + } + + /** @ingroup Serializable */ + template + void to_variant( const std::deque& t, variant& v ) + { + std::deque vars(t.size()); + for( size_t i = 0; i < t.size(); ++i ) + vars[i] = variant(t[i]); + v = std::move(vars); + } + + /** @ingroup Serializable */ template void from_variant( const variant& var, std::vector& tmp ) @@ -472,6 +499,8 @@ namespace fc vars[i] = variant(t[i]); v = std::move(vars); } + + /** @ingroup Serializable */ template void to_variant( const std::pair& t, variant& v )