Updates from BitShares FC #22
3 changed files with 31 additions and 0 deletions
|
|
@ -676,6 +676,18 @@ namespace fc {
|
|||
}
|
||||
}
|
||||
|
||||
template<typename Stream, boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
void pack( Stream& s, const boost::endian::endian_buffer<O,T,N,A>& v, uint32_t _max_depth )
|
||||
{
|
||||
FC_ASSERT( _max_depth > 0 );
|
||||
s.write( v.data(), sizeof(v) );
|
||||
}
|
||||
template<typename Stream, boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
void unpack( Stream& s, boost::endian::endian_buffer<O,T,N,A>& v, uint32_t _max_depth )
|
||||
{
|
||||
FC_ASSERT( _max_depth > 0 );
|
||||
s.read( v.data(), sizeof(v) );
|
||||
}
|
||||
|
||||
|
||||
template<typename Stream, typename T>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#pragma once
|
||||
#include <boost/endian/buffers.hpp>
|
||||
#include <fc/config.hpp>
|
||||
#include <fc/container/flat_fwd.hpp>
|
||||
#include <fc/io/varint.hpp>
|
||||
|
|
@ -117,6 +118,10 @@ namespace fc {
|
|||
template<typename Stream> inline void pack( Stream& s, const char* v, uint32_t _max_depth=FC_PACK_MAX_DEPTH );
|
||||
template<typename Stream> inline void pack( Stream& s, const std::vector<char>& value, uint32_t _max_depth=FC_PACK_MAX_DEPTH );
|
||||
template<typename Stream> inline void unpack( Stream& s, std::vector<char>& value, uint32_t _max_depth=FC_PACK_MAX_DEPTH );
|
||||
template<typename Stream, boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
inline void pack( Stream& s, const boost::endian::endian_buffer<O,T,N,A>& v, uint32_t _max_depth );
|
||||
template<typename Stream, boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
inline void unpack( Stream& s, boost::endian::endian_buffer<O,T,N,A>& v, uint32_t _max_depth );
|
||||
|
||||
template<typename Stream, typename T, size_t N> inline void pack( Stream& s, const fc::array<T,N>& v, uint32_t _max_depth=FC_PACK_MAX_DEPTH );
|
||||
template<typename Stream, typename T, size_t N> inline void unpack( Stream& s, fc::array<T,N>& v, uint32_t _max_depth=FC_PACK_MAX_DEPTH);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include <fc/optional.hpp>
|
||||
#include <fc/container/flat_fwd.hpp>
|
||||
#include <boost/endian/buffers.hpp>
|
||||
#include <boost/multi_index_container_fwd.hpp>
|
||||
|
||||
#ifdef FC_ASSERT
|
||||
|
|
@ -165,6 +166,19 @@ namespace fc
|
|||
template<typename A, typename B>
|
||||
void from_variant( const variant& v, std::pair<A,B>& p, uint32_t max_depth );
|
||||
|
||||
template<boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
void to_variant( const boost::endian::endian_buffer<O,T,N,A>& var, variant& vo, uint32_t max_depth )
|
||||
{
|
||||
to_variant( var.value(), vo, max_depth );
|
||||
}
|
||||
template<boost::endian::order O, class T, std::size_t N, boost::endian::align A>
|
||||
void from_variant( const variant& var, boost::endian::endian_buffer<O,T,N,A>& vo, uint32_t max_depth )
|
||||
{
|
||||
T tmp;
|
||||
from_variant( var, tmp, max_depth );
|
||||
vo = tmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief stores null, int64, uint64, double, bool, string, std::vector<variant>,
|
||||
* and variant_object's.
|
||||
|
|
|
|||
Loading…
Reference in a new issue