diff --git a/include/fc/variant.hpp b/include/fc/variant.hpp index 973d762..553c96c 100644 --- a/include/fc/variant.hpp +++ b/include/fc/variant.hpp @@ -61,6 +61,11 @@ namespace fc void to_variant( const std::map& var, variant& vo ); template void from_variant( const variant& var, std::map& vo ); + template + void to_variant( const std::multimap& var, variant& vo ); + template + void from_variant( const variant& var, std::multimap& vo ); + template void to_variant( const std::unordered_set& var, variant& vo ); @@ -354,6 +359,24 @@ namespace fc vo.insert( itr->as< std::pair >() ); } + template + void to_variant( const std::multimap& var, variant& vo ) + { + std::vector< variant > vars(var.size()); + size_t i = 0; + for( auto itr = var.begin(); itr != var.end(); ++itr, ++i ) + vars[i] = fc::variant(*itr); + vo = vars; + } + template + void from_variant( const variant& var, std::multimap& vo ) + { + const variants& vars = var.get_array(); + vo.clear(); + for( auto itr = vars.begin(); itr != vars.end(); ++itr ) + vo.insert( itr->as< std::pair >() ); + } + template void to_variant( const std::set& var, variant& vo )