adding std::map<> conversions to/from variant

This commit is contained in:
Daniel Larimer 2014-03-24 11:46:23 -04:00
parent e2fb6eb5be
commit bdeefb48bf

View file

@ -6,6 +6,7 @@
#include <string.h> // memset
#include <unordered_set>
#include <unordered_map>
#include <map>
#include <set>
namespace fc
@ -47,6 +48,10 @@ namespace fc
void to_variant( const std::unordered_map<K,T>& var, variant& vo );
template<typename K, typename T>
void from_variant( const variant& var, std::unordered_map<K,T>& vo );
template<typename K, typename T>
void to_variant( const std::map<K,T>& var, variant& vo );
template<typename K, typename T>
void from_variant( const variant& var, std::map<K,T>& vo );
template<typename T>
void to_variant( const std::unordered_set<T>& var, variant& vo );
@ -314,6 +319,23 @@ namespace fc
vo.insert( itr->as< std::pair<K,T> >() );
}
template<typename K, typename T>
void to_variant( const std::map<K, T>& 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<typename K, typename T>
void from_variant( const variant& var, std::map<K, T>& vo )
{
const variants& vars = var.get_array();
vo.clear();
for( auto itr = vars.begin(); itr != vars.end(); ++itr )
vo.insert( itr->as< std::pair<K,T> >() );
}
template<typename T>