提交 540f2558 编写于 作者: D Daniel Larimer

Merge branch 'slim' of github.com:EOSIO/eos into slim

...@@ -174,6 +174,19 @@ namespace impl { ...@@ -174,6 +174,19 @@ namespace impl {
mvo(name, std::move(array)); mvo(name, std::move(array));
} }
/**
* template which overloads add for shared_ptr of types which contain ABI information in their trees
* for these members we call ::add in order to trigger further processing
*/
template<typename M, typename Resolver, require_abi_t<M> = 1>
static void add( mutable_variant_object &mvo, const char* name, const std::shared_ptr<M>& v, Resolver resolver )
{
if( !v ) return;
mutable_variant_object obj_mvo;
add(obj_mvo, "_", *v, resolver);
mvo(name, std::move(obj_mvo["_"]));
}
template<typename Resolver, typename... Args> template<typename Resolver, typename... Args>
static void add( mutable_variant_object &mvo, const char* name, const fc::static_variant<Args...>& v, Resolver resolver ) static void add( mutable_variant_object &mvo, const char* name, const fc::static_variant<Args...>& v, Resolver resolver )
{ {
...@@ -317,6 +330,19 @@ namespace impl { ...@@ -317,6 +330,19 @@ namespace impl {
} }
} }
/**
* template which overloads extract for shared_ptr of types which contain ABI information in their trees
* for these members we call ::extract in order to trigger further processing
*/
template<typename M, typename Resolver, require_abi_t<M> = 1>
static void extract( const variant& v, std::shared_ptr<M>& o, Resolver resolver )
{
const variant_object& vo = v.get_object();
M obj;
extract(vo, obj, resolver);
o = std::make_shared<M>(obj);
}
/** /**
* Non templated overload that has priority for the action structure * Non templated overload that has priority for the action structure
* this type has members which must be directly translated by the ABI so it is * this type has members which must be directly translated by the ABI so it is
......
...@@ -66,5 +66,5 @@ FC_REFLECT_DERIVED( eosio::chain::action_trace, ...@@ -66,5 +66,5 @@ FC_REFLECT_DERIVED( eosio::chain::action_trace,
(eosio::chain::base_action_trace), (inline_traces) ) (eosio::chain::base_action_trace), (inline_traces) )
FC_REFLECT( eosio::chain::transaction_trace, (id)(receipt)(elapsed)(net_usage)(cpu_usage)(scheduled)(action_traces) FC_REFLECT( eosio::chain::transaction_trace, (id)(receipt)(elapsed)(net_usage)(cpu_usage)(scheduled)(action_traces)
/*(failed_dtrx_trace)*/(soft_except)(hard_except) ) (failed_dtrx_trace)(soft_except)(hard_except) )
FC_REFLECT( eosio::chain::block_trace, (elapsed)(cpu_usage)(trx_traces) ) FC_REFLECT( eosio::chain::block_trace, (elapsed)(cpu_usage)(trx_traces) )
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册