From 70dbcc11e39d12b74a71ef43169de37e030b88c0 Mon Sep 17 00:00:00 2001 From: abitmore Date: Sat, 11 Aug 2018 11:20:10 -0400 Subject: [PATCH] Added visit_local_member(...) methods to reflector --- include/fc/reflect/reflect.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/fc/reflect/reflect.hpp b/include/fc/reflect/reflect.hpp index 45efbe0..5a97a8e 100644 --- a/include/fc/reflect/reflect.hpp +++ b/include/fc/reflect/reflect.hpp @@ -87,6 +87,9 @@ void throw_bad_enum_cast( const char* k, const char* e ); visitor.TEMPLATE operator()( BOOST_PP_STRINGIZE(elem) ); \ } +#define FC_REFLECT_VISIT_MEMBER_I( r, visitor, I, elem ) \ + case I: FC_REFLECT_VISIT_MEMBER( r, visitor, elem ) break; + #define FC_REFLECT_BASE_MEMBER_COUNT( r, OP, elem ) \ OP fc::reflector::total_member_count @@ -99,6 +102,13 @@ template\ static inline void visit( const Visitor& v ) { \ BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_VISIT_BASE, v, INHERITS ) \ BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_VISIT_MEMBER, v, MEMBERS ) \ +}\ +template\ +static inline void visit_local_member( const Visitor& v, IndexType index ) { \ + switch( index ) {\ + BOOST_PP_SEQ_FOR_EACH_I( FC_REFLECT_VISIT_MEMBER_I, v, MEMBERS ) \ + default: break;\ + }\ } #define FC_REFLECT_DERIVED_IMPL_EXT( TYPE, INHERITS, MEMBERS ) \