variant_object: Implement operator() overload to copy a variant_object

This commit is contained in:
theoreticalbts 2015-08-28 22:12:59 -04:00
parent 71be796af5
commit 80d967a70d
2 changed files with 24 additions and 0 deletions

View file

@ -176,6 +176,14 @@ namespace fc
set(std::move(key), variant( fc::forward<T>(var) ) );
return *this;
}
/**
* Copy a variant_object into this mutable_variant_object.
*/
mutable_variant_object& operator()( const variant_object& vo );
/**
* Copy another mutable_variant_object into this mutable_variant_object.
*/
mutable_variant_object& operator()( const mutable_variant_object& mvo );
///@}

View file

@ -350,6 +350,22 @@ namespace fc
return *this;
}
mutable_variant_object& mutable_variant_object::operator()( const variant_object& vo )
{
for( const variant_object::entry& e : vo )
set( e.key(), e.value() );
return *this;
}
mutable_variant_object& mutable_variant_object::operator()( const mutable_variant_object& mvo )
{
if( &mvo == this ) // mvo(mvo) is no-op
return *this;
for( const mutable_variant_object::entry& e : mvo )
set( e.key(), e.value() );
return *this;
}
void to_variant( const mutable_variant_object& var, variant& vo )
{
vo = variant(var);