unique_ptr to/from variant
This commit is contained in:
parent
257ac52b91
commit
a0192d1081
1 changed files with 20 additions and 0 deletions
|
|
@ -41,6 +41,8 @@ namespace fc
|
|||
void from_variant( const variant& var, blob& vo );
|
||||
template<typename T> void to_variant( const safe<T>& s, variant& v );
|
||||
template<typename T> void from_variant( const variant& v, safe<T>& s );
|
||||
template<typename T> void to_variant( const std::unique_ptr<T>& s, variant& v );
|
||||
template<typename T> void from_variant( const variant& v, std::unique_ptr<T>& s );
|
||||
|
||||
template<typename... T> void to_variant( const static_variant<T...>& s, variant& v );
|
||||
template<typename... T> void from_variant( const variant& v, static_variant<T...>& s );
|
||||
|
|
@ -502,6 +504,23 @@ namespace fc
|
|||
from_variant( var, *vo );
|
||||
}
|
||||
}
|
||||
template<typename T>
|
||||
void to_variant( const std::unique_ptr<T>& var, variant& vo )
|
||||
{
|
||||
if( var ) to_variant( *var, vo );
|
||||
else vo = nullptr;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void from_variant( const variant& var, std::unique_ptr<T>& vo )
|
||||
{
|
||||
if( var.is_null() ) vo.reset();
|
||||
else if( vo ) from_variant( var, *vo );
|
||||
else {
|
||||
vo.reset( new T() );
|
||||
from_variant( var, *vo );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
|
|
@ -510,6 +529,7 @@ namespace fc
|
|||
template<typename T>
|
||||
void from_variant( const variant& v, safe<T>& s ) { s.value = v.as_uint64(); }
|
||||
|
||||
|
||||
variant operator + ( const variant& a, const variant& b );
|
||||
variant operator - ( const variant& a, const variant& b );
|
||||
variant operator * ( const variant& a, const variant& b );
|
||||
|
|
|
|||
Loading…
Reference in a new issue