From 78b511c11e129fd9009a09ae7c448eed42ac4eef Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Tue, 20 Sep 2016 15:06:00 -0400 Subject: [PATCH 1/2] Fix warning in fixed_string.hpp --- include/fc/fixed_string.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/fc/fixed_string.hpp b/include/fc/fixed_string.hpp index b141165..4982838 100644 --- a/include/fc/fixed_string.hpp +++ b/include/fc/fixed_string.hpp @@ -7,7 +7,7 @@ namespace fc { /** * This class is designed to offer in-place memory allocation of a string up to Length equal to - * sizeof(Storage). + * sizeof(Storage). * * The string will serialize the same way as std::string for variant and raw formats * The string will sort according to the comparison operators defined for Storage, this enables effecient @@ -27,7 +27,7 @@ namespace fc { } } fixed_string( const char* str ) { - int l = strlen(str); + auto l = strlen(str); if( l <= sizeof(data) ) memcpy( (char*)&data, str, l ); else { @@ -35,7 +35,7 @@ namespace fc { } } - operator std::string()const { + operator std::string()const { const char* self = (const char*)&data; return std::string( self, self + size() ); } @@ -98,15 +98,15 @@ namespace fc { namespace raw { template - inline void pack( Stream& s, const fc::fixed_string& u ) { + inline void pack( Stream& s, const fc::fixed_string& u ) { unsigned_int size = u.size(); pack( s, size ); s.write( (const char*)&u.data, size ); } template - inline void unpack( Stream& s, fc::fixed_string& u ) { - unsigned_int size; + inline void unpack( Stream& s, fc::fixed_string& u ) { + unsigned_int size; fc::raw::unpack( s, size ); if( size.value > 0 ) { if( size.value > sizeof(Storage) ) { @@ -133,7 +133,7 @@ namespace fc { } template - inline void unpack( Stream& s, boost::multiprecision::number& u ) { + inline void unpack( Stream& s, boost::multiprecision::number& u ) { s.read( (const char*)&u, sizeof(u) ); } */ From ea78d2e75d3c74cc65e98ff5959627350a982b0f Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Fri, 23 Sep 2016 12:19:47 -0400 Subject: [PATCH 2/2] reflect.hpp: Improve reflection of enum types - Fix implementation of FC_REFLECT_VISIT_ENUM() - Re-enable visit() for enum - Add typename information for enum --- include/fc/reflect/reflect.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/fc/reflect/reflect.hpp b/include/fc/reflect/reflect.hpp index c9f5405..45efbe0 100644 --- a/include/fc/reflect/reflect.hpp +++ b/include/fc/reflect/reflect.hpp @@ -112,7 +112,7 @@ void fc::reflector::visit( const Visitor& v ) { \ #define FC_REFLECT_VISIT_ENUM( r, enum_type, elem ) \ - v.TEMPLATE operator()(BOOST_PP_STRINGIZE(elem)); + v.operator()(BOOST_PP_STRINGIZE(elem), int64_t(enum_type::elem) ); #define FC_REFLECT_ENUM_TO_STRING( r, enum_type, elem ) \ case enum_type::elem: return BOOST_PP_STRINGIZE(elem); #define FC_REFLECT_ENUM_TO_FC_STRING( r, enum_type, elem ) \ @@ -172,7 +172,13 @@ template<> struct reflector { \ } \ return from_int(i); \ } \ + template< typename Visitor > \ + static void visit( Visitor& v ) \ + { \ + BOOST_PP_SEQ_FOR_EACH( FC_REFLECT_VISIT_ENUM, ENUM, FIELDS ) \ + } \ }; \ +template<> struct get_typename { static const char* name() { return BOOST_PP_STRINGIZE(ENUM); } }; \ } /* Note: FC_REFLECT_ENUM previously defined this function, but I don't think it ever