From d11b48a015e0c339cc20f739ef1f8a5b3c57b913 Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Tue, 28 Jul 2015 16:40:49 -0400 Subject: [PATCH] exception.hpp: Implement exception constructors for const log_messages& --- include/fc/exception/exception.hpp | 8 ++++++++ src/exception.cpp | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/fc/exception/exception.hpp b/include/fc/exception/exception.hpp index 73e4bf5..028b172 100644 --- a/include/fc/exception/exception.hpp +++ b/include/fc/exception/exception.hpp @@ -70,6 +70,10 @@ namespace fc exception( log_messages&&, int64_t code = unspecified_exception_code, const std::string& name_value = "exception", const std::string& what_value = "unspecified"); + exception( const log_messages&, + int64_t code = unspecified_exception_code, + const std::string& name_value = "exception", + const std::string& what_value = "unspecified"); exception( const exception& e ); exception( exception&& e ); ~exception(); @@ -232,6 +236,10 @@ namespace fc :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 ) \ diff --git a/src/exception.cpp b/src/exception.cpp index 8887922..fef482a 100644 --- a/src/exception.cpp +++ b/src/exception.cpp @@ -50,6 +50,19 @@ namespace fc my->_elog = fc::move(msgs); } + exception::exception( + const log_messages& msgs, + int64_t code, + const std::string& name_value, + const std::string& what_value ) + :my( new detail::exception_impl() ) + { + my->_code = code; + my->_what = what_value; + my->_name = name_value; + my->_elog = msgs; + } + unhandled_exception::unhandled_exception( log_message&& m, std::exception_ptr e ) :exception( fc::move(m) ) {