From 1cae4d3481f6c2ef263822f26bec60ce3989c718 Mon Sep 17 00:00:00 2001 From: pbattu123 Date: Mon, 6 Jan 2020 17:00:41 -0400 Subject: [PATCH] Revert "Merge pull request #13 from gladcow/feature/GRPH-92" This reverts commit c30f3b7d32502fc1a746cefa132848cb80a4129b, reversing changes made to 31e289c53d3625afea87c54edb6d97c3bca4c626. --- include/fc/exception/exception.hpp | 117 ++++++++++++----------------- include/fc/io/raw.hpp | 8 +- include/fc/network/ip.hpp | 13 ++-- src/exception.cpp | 18 ----- 4 files changed, 61 insertions(+), 95 deletions(-) diff --git a/include/fc/exception/exception.hpp b/include/fc/exception/exception.hpp index 34dbf42..091cc4b 100755 --- a/include/fc/exception/exception.hpp +++ b/include/fc/exception/exception.hpp @@ -5,7 +5,6 @@ */ #include #include -#include #include #include #include @@ -223,97 +222,81 @@ namespace fc }(); \ -#define FC_DECLARE_DERIVED_EXCEPTION( TYPE, BASE, CODE ) \ +#define FC_DECLARE_DERIVED_EXCEPTION( TYPE, BASE, CODE, WHAT ) \ class TYPE : public BASE \ { \ public: \ enum code_enum { \ code_value = CODE, \ }; \ - explicit TYPE( int64_t code, const std::string& name_value, const std::string& what_value ); \ - explicit TYPE( fc::log_message&& m, int64_t code, const std::string& name_value, const std::string& what_value ); \ - explicit TYPE( fc::log_messages&& m, int64_t code, const std::string& name_value, const std::string& what_value );\ - explicit TYPE( const fc::log_messages& m, int64_t code, const std::string& name_value, const std::string& what_value );\ - explicit TYPE( const std::string& what_value, const fc::log_messages& m ); \ - explicit TYPE( fc::log_message&& m ); \ - explicit TYPE( fc::log_messages msgs ); \ - TYPE( TYPE&& c ) = default; \ - TYPE( const TYPE& c ); \ - TYPE( const BASE& c ); \ - explicit TYPE();\ + explicit TYPE( int64_t code, const std::string& name_value, const std::string& what_value ) \ + :BASE( code, name_value, what_value ){} \ + explicit TYPE( fc::log_message&& m, int64_t code, const std::string& name_value, const std::string& what_value ) \ + :BASE( std::move(m), code, name_value, what_value ){} \ + explicit TYPE( fc::log_messages&& m, int64_t code, const std::string& name_value, const std::string& what_value )\ + :BASE( std::move(m), code, name_value, what_value ){}\ + explicit TYPE( const fc::log_messages& m, int64_t code, const std::string& name_value, const std::string& what_value )\ + :BASE( m, code, name_value, what_value ){}\ + TYPE( const std::string& what_value, const fc::log_messages& m ) \ + :BASE( m, CODE, BOOST_PP_STRINGIZE(TYPE), what_value ){} \ + TYPE( fc::log_message&& m ) \ + :BASE( fc::move(m), CODE, BOOST_PP_STRINGIZE(TYPE), WHAT ){}\ + TYPE( fc::log_messages msgs ) \ + :BASE( fc::move( msgs ), CODE, BOOST_PP_STRINGIZE(TYPE), WHAT ) {} \ + TYPE( const TYPE& c ) \ + :BASE(c){} \ + TYPE( const BASE& c ) \ + :BASE(c){} \ + TYPE():BASE(CODE, BOOST_PP_STRINGIZE(TYPE), WHAT){}\ \ - virtual std::shared_ptr dynamic_copy_exception()const;\ - virtual NO_RETURN void dynamic_rethrow_exception()const; \ + virtual std::shared_ptr dynamic_copy_exception()const\ + { return std::make_shared( *this ); } \ + virtual NO_RETURN void dynamic_rethrow_exception()const \ + { if( code() == CODE ) throw *this;\ + else fc::exception::dynamic_rethrow_exception(); \ + } \ }; -#define FC_IMPLEMENT_DERIVED_EXCEPTION( TYPE, BASE, CODE, WHAT ) \ - TYPE::TYPE( int64_t code, const std::string& name_value, const std::string& what_value ) \ - : BASE( code, name_value, what_value ) {} \ - TYPE::TYPE( fc::log_message&& m, int64_t code, const std::string& name_value, const std::string& what_value ) \ - : BASE( std::move(m), code, name_value, what_value ) {} \ - TYPE::TYPE( fc::log_messages&& m, int64_t code, const std::string& name_value, const std::string& what_value ) \ - : BASE( std::move(m), code, name_value, what_value ) {} \ - TYPE::TYPE( const fc::log_messages& m, int64_t code, const std::string& name_value, const std::string& what_value ) \ - : BASE( m, code, name_value, what_value ) {} \ - TYPE::TYPE( const std::string& what_value, const fc::log_messages& m ) \ - : BASE( m, CODE, BOOST_PP_STRINGIZE(TYPE), what_value ) {} \ - TYPE::TYPE( fc::log_message&& m ) \ - : BASE( std::move(m), CODE, BOOST_PP_STRINGIZE(TYPE), WHAT ) {} \ - TYPE::TYPE( fc::log_messages msgs ) \ - : BASE( std::move( msgs ), CODE, BOOST_PP_STRINGIZE(TYPE), WHAT ) {} \ - TYPE::TYPE( const TYPE& c ) : BASE(c) {} \ - TYPE::TYPE( const BASE& c ) : BASE(c) {} \ - TYPE::TYPE() : BASE(CODE, BOOST_PP_STRINGIZE(TYPE), WHAT) {} \ - \ - std::shared_ptr TYPE::dynamic_copy_exception()const \ - { \ - return std::make_shared( *this ); \ - } \ - NO_RETURN void TYPE::dynamic_rethrow_exception()const \ - { \ - if( code() == CODE ) throw *this;\ - else fc::exception::dynamic_rethrow_exception(); \ - } + #define FC_DECLARE_EXCEPTION( TYPE, CODE, WHAT ) \ + FC_DECLARE_DERIVED_EXCEPTION( TYPE, fc::exception, CODE, WHAT ) -#define FC_DECLARE_EXCEPTION( TYPE, CODE ) \ - FC_DECLARE_DERIVED_EXCEPTION( TYPE, fc::exception, CODE ) - -#define FC_IMPLEMENT_EXCEPTION( TYPE, CODE, WHAT ) \ - FC_IMPLEMENT_DERIVED_EXCEPTION( TYPE, fc::exception, CODE, WHAT ) - - FC_DECLARE_EXCEPTION( timeout_exception, timeout_exception_code ); - FC_DECLARE_EXCEPTION( file_not_found_exception, file_not_found_exception_code ); + FC_DECLARE_EXCEPTION( timeout_exception, timeout_exception_code, "Timeout" ); + FC_DECLARE_EXCEPTION( file_not_found_exception, file_not_found_exception_code, "File Not Found" ); /** - * @brief reports parse errors + * @brief report's parse errors */ - FC_DECLARE_EXCEPTION( parse_error_exception, parse_error_exception_code ); - FC_DECLARE_EXCEPTION( invalid_arg_exception, invalid_arg_exception_code ); + FC_DECLARE_EXCEPTION( parse_error_exception, parse_error_exception_code, "Parse Error" ); + FC_DECLARE_EXCEPTION( invalid_arg_exception, invalid_arg_exception_code, "Invalid Argument" ); /** * @brief reports when a key, guid, or other item is not found. */ - FC_DECLARE_EXCEPTION( key_not_found_exception, key_not_found_exception_code ); - FC_DECLARE_EXCEPTION( bad_cast_exception, bad_cast_exception_code ); - FC_DECLARE_EXCEPTION( out_of_range_exception, out_of_range_exception_code ); + FC_DECLARE_EXCEPTION( key_not_found_exception, key_not_found_exception_code, "Key Not Found" ); + FC_DECLARE_EXCEPTION( bad_cast_exception, bad_cast_exception_code, "Bad Cast" ); + FC_DECLARE_EXCEPTION( out_of_range_exception, out_of_range_exception_code, "Out of Range" ); /** @brief if an operation is unsupported or not valid this may be thrown */ - FC_DECLARE_EXCEPTION( invalid_operation_exception, invalid_operation_exception_code ); + FC_DECLARE_EXCEPTION( invalid_operation_exception, + invalid_operation_exception_code, + "Invalid Operation" ); /** @brief if an host name can not be resolved this may be thrown */ - FC_DECLARE_EXCEPTION( unknown_host_exception, unknown_host_exception_code ); + FC_DECLARE_EXCEPTION( unknown_host_exception, + unknown_host_exception_code, + "Unknown Host" ); /** * @brief used to report a canceled Operation */ - FC_DECLARE_EXCEPTION( canceled_exception, canceled_exception_code ); + FC_DECLARE_EXCEPTION( canceled_exception, canceled_exception_code, "Canceled" ); /** * @brief used inplace of assert() to report violations of pre conditions. */ - FC_DECLARE_EXCEPTION( assert_exception, assert_exception_code ); - FC_DECLARE_EXCEPTION( eof_exception, eof_exception_code ); - FC_DECLARE_EXCEPTION( null_optional, null_optional_code ); - FC_DECLARE_EXCEPTION( aes_exception, aes_error_code ); - FC_DECLARE_EXCEPTION( overflow_exception, overflow_code ); - FC_DECLARE_EXCEPTION( underflow_exception, underflow_code ); - FC_DECLARE_EXCEPTION( divide_by_zero_exception, divide_by_zero_code ); + FC_DECLARE_EXCEPTION( assert_exception, assert_exception_code, "Assert Exception" ); + FC_DECLARE_EXCEPTION( eof_exception, eof_exception_code, "End Of File" ); + FC_DECLARE_EXCEPTION( null_optional, null_optional_code, "null optional" ); + FC_DECLARE_EXCEPTION( aes_exception, aes_error_code, "AES error" ); + FC_DECLARE_EXCEPTION( overflow_exception, overflow_code, "Integer Overflow" ); + FC_DECLARE_EXCEPTION( underflow_exception, underflow_code, "Integer Underflow" ); + FC_DECLARE_EXCEPTION( divide_by_zero_exception, divide_by_zero_code, "Integer Divide By Zero" ); std::string except_str(); diff --git a/include/fc/io/raw.hpp b/include/fc/io/raw.hpp index bb97647..2125865 100755 --- a/include/fc/io/raw.hpp +++ b/include/fc/io/raw.hpp @@ -616,12 +616,14 @@ namespace fc { } + template - void pack( Stream& s, const T& v ) { - fc::raw::detail::if_reflected< typename fc::reflector::is_defined >::pack(s,v); + inline void pack( Stream& s, const T& v, uint32_t _max_depth ) { + FC_ASSERT( _max_depth > 0 ); + fc::raw::detail::if_reflected< typename fc::reflector::is_defined >::pack( s, v, _max_depth - 1 ); } template - void unpack( Stream& s, T& v ) + inline void unpack( Stream& s, T& v, uint32_t _max_depth ) { try { FC_ASSERT( _max_depth > 0 ); fc::raw::detail::if_reflected< typename fc::reflector::is_defined >::unpack( s, v, _max_depth - 1 ); diff --git a/include/fc/network/ip.hpp b/include/fc/network/ip.hpp index d428e60..7a55616 100755 --- a/include/fc/network/ip.hpp +++ b/include/fc/network/ip.hpp @@ -82,14 +82,14 @@ namespace fc { namespace raw { - template - void pack( Stream& s, const ip::address& v ) + template + inline void pack( Stream& s, const ip::address& v, uint32_t _max_depth=FC_PACK_MAX_DEPTH ) { FC_ASSERT( _max_depth > 0 ); fc::raw::pack( s, uint32_t(v), _max_depth - 1 ); } - template - void unpack( Stream& s, ip::address& v ) + template + inline void unpack( Stream& s, ip::address& v, uint32_t _max_depth=FC_PACK_MAX_DEPTH ) { FC_ASSERT( _max_depth > 0 ); uint32_t _ip; @@ -119,9 +119,8 @@ namespace fc { } } // namespace fc - -FC_REFLECT_EMPTY( fc::ip::address ) -FC_REFLECT_TYPENAME( fc::ip::endpoint ) +FC_REFLECT_TYPENAME( fc::ip::address ) +FC_REFLECT_TYPENAME( fc::ip::endpoint ) namespace std { template<> diff --git a/src/exception.cpp b/src/exception.cpp index ce67b4a..1f84286 100755 --- a/src/exception.cpp +++ b/src/exception.cpp @@ -8,24 +8,6 @@ namespace fc { - FC_IMPLEMENT_EXCEPTION( timeout_exception, timeout_exception_code, "Timeout" ) - FC_IMPLEMENT_EXCEPTION( file_not_found_exception, file_not_found_exception_code, "File Not Found" ) - FC_IMPLEMENT_EXCEPTION( parse_error_exception, parse_error_exception_code, "Parse Error" ) - FC_IMPLEMENT_EXCEPTION( invalid_arg_exception, invalid_arg_exception_code, "Invalid Argument" ) - FC_IMPLEMENT_EXCEPTION( key_not_found_exception, key_not_found_exception_code, "Key Not Found" ) - FC_IMPLEMENT_EXCEPTION( bad_cast_exception, bad_cast_exception_code, "Bad Cast" ) - FC_IMPLEMENT_EXCEPTION( out_of_range_exception, out_of_range_exception_code, "Out of Range" ) - FC_IMPLEMENT_EXCEPTION( invalid_operation_exception, invalid_operation_exception_code, "Invalid Operation" ) - FC_IMPLEMENT_EXCEPTION( unknown_host_exception, unknown_host_exception_code, "Unknown Host" ) - FC_IMPLEMENT_EXCEPTION( canceled_exception, canceled_exception_code, "Canceled" ) - FC_IMPLEMENT_EXCEPTION( assert_exception, assert_exception_code, "Assert Exception" ) - FC_IMPLEMENT_EXCEPTION( eof_exception, eof_exception_code, "End Of File" ) - FC_IMPLEMENT_EXCEPTION( null_optional, null_optional_code, "null optional" ) - FC_IMPLEMENT_EXCEPTION( aes_exception, aes_error_code, "AES error" ) - FC_IMPLEMENT_EXCEPTION( overflow_exception, overflow_code, "Integer Overflow" ) - FC_IMPLEMENT_EXCEPTION( underflow_exception, underflow_code, "Integer Underflow" ) - FC_IMPLEMENT_EXCEPTION( divide_by_zero_exception, divide_by_zero_code, "Integer Divide By Zero" ) - FC_REGISTER_EXCEPTIONS( (timeout_exception) (file_not_found_exception) (parse_error_exception)