helper for smart_ref

This commit is contained in:
Daniel Larimer 2015-07-08 16:43:25 -04:00
parent e2e0f38dc6
commit 63677c47d9
3 changed files with 26 additions and 2 deletions

View file

@ -5,6 +5,7 @@
#include <fc/io/varint.hpp>
#include <fc/optional.hpp>
#include <fc/fwd.hpp>
#include <fc/smart_ref_fwd.hpp>
#include <fc/array.hpp>
#include <fc/time.hpp>
#include <fc/filesystem.hpp>
@ -177,6 +178,21 @@ namespace fc {
template<typename Stream, typename T>
void unpack( Stream& s, fc::safe<T>& v ) { unpack( s, v.value ); }
template<typename Stream, typename T, unsigned int S, typename Align>
void pack( Stream& s, const fc::fwd<T,S,Align>& v ) {
pack( *v );
}
template<typename Stream, typename T, unsigned int S, typename Align>
void unpack( Stream& s, fc::fwd<T,S,Align>& v ) {
unpack( *v );
}
template<typename Stream, typename T>
void pack( Stream& s, const fc::smart_ref<T>& v ) { pack( s, *v ); }
template<typename Stream, typename T>
void unpack( Stream& s, fc::smart_ref<T>& v ) { unpack( s, *v ); }
// optional
template<typename Stream, typename T>
void pack( Stream& s, const fc::optional<T>& v ) {

View file

@ -270,11 +270,11 @@ public:
}
friend bool operator == ( const static_variant& a, const static_variant& b )
{
return a.wich() == b.which();
return a.which() == b.which();
}
friend bool operator < ( const static_variant& a, const static_variant& b )
{
return a.wich() < b.which();
return a.which() < b.which();
}
template<typename X>

View file

@ -14,6 +14,7 @@
#include <fc/string.hpp>
#include <fc/container/deque_fwd.hpp>
#include <fc/container/flat_fwd.hpp>
#include <fc/smart_ref_fwd.hpp>
namespace fc
{
@ -44,6 +45,8 @@ namespace fc
void to_variant( const blob& var, variant& vo );
void from_variant( const variant& var, blob& vo );
template<typename T> void to_variant( const smart_ref<T>& s, variant& v );
template<typename T> void from_variant( const variant& v, smart_ref<T>& s );
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 );
@ -534,6 +537,11 @@ namespace fc
template<typename T>
void from_variant( const variant& v, safe<T>& s ) { s.value = v.as_uint64(); }
template<typename T>
void to_variant( const smart_ref<T>& s, variant& v ) { v = *s; }
template<typename T>
void from_variant( const variant& v, smart_ref<T>& s ) { from_variant( v, *s ); }
variant operator + ( const variant& a, const variant& b );
variant operator - ( const variant& a, const variant& b );