Fix compatibility with Boost 1.78 (#3815)
This commit is contained in:
parent
c57c4f8030
commit
64db0ab554
3 changed files with 25 additions and 0 deletions
|
|
@ -280,6 +280,7 @@ std::string nano::error_config_messages::message (int ev) const
|
||||||
return "Invalid error code";
|
return "Invalid error code";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
char const * nano::error_conversion::detail::generic_category::name () const noexcept
|
char const * nano::error_conversion::detail::generic_category::name () const noexcept
|
||||||
{
|
{
|
||||||
return boost::system::generic_category ().name ();
|
return boost::system::generic_category ().name ();
|
||||||
|
|
@ -307,16 +308,19 @@ std::error_code nano::error_conversion::convert (boost::system::error_code const
|
||||||
debug_assert (false);
|
debug_assert (false);
|
||||||
return nano::error_common::invalid_type_conversion;
|
return nano::error_common::invalid_type_conversion;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nano::error::error (std::error_code code_a)
|
nano::error::error (std::error_code code_a)
|
||||||
{
|
{
|
||||||
code = code_a;
|
code = code_a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
nano::error::error (boost::system::error_code const & code_a)
|
nano::error::error (boost::system::error_code const & code_a)
|
||||||
{
|
{
|
||||||
code = std::make_error_code (static_cast<std::errc> (code_a.value ()));
|
code = std::make_error_code (static_cast<std::errc> (code_a.value ()));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nano::error::error (std::string message_a)
|
nano::error::error (std::string message_a)
|
||||||
{
|
{
|
||||||
|
|
@ -352,6 +356,7 @@ nano::error & nano::error::operator= (std::error_code const code_a)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
/** Assign boost error code (as converted to std::error_code) */
|
/** Assign boost error code (as converted to std::error_code) */
|
||||||
nano::error & nano::error::operator= (boost::system::error_code const & code_a)
|
nano::error & nano::error::operator= (boost::system::error_code const & code_a)
|
||||||
{
|
{
|
||||||
|
|
@ -367,6 +372,7 @@ nano::error & nano::error::operator= (boost::system::errc::errc_t const & code_a
|
||||||
message.clear ();
|
message.clear ();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Set the error to nano::error_common::generic and the error message to \p message_a */
|
/** Set the error to nano::error_common::generic and the error message to \p message_a */
|
||||||
nano::error & nano::error::operator= (std::string message_a)
|
nano::error & nano::error::operator= (std::string message_a)
|
||||||
|
|
@ -390,11 +396,13 @@ bool nano::error::operator== (std::error_code const code_a) const
|
||||||
return code == code_a;
|
return code == code_a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
/** Return true if this#error_code equals the parameter */
|
/** Return true if this#error_code equals the parameter */
|
||||||
bool nano::error::operator== (boost::system::error_code const code_a) const
|
bool nano::error::operator== (boost::system::error_code const code_a) const
|
||||||
{
|
{
|
||||||
return code.value () == code_a.value ();
|
return code.value () == code_a.value ();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Call the function iff the current error is zero */
|
/** Call the function iff the current error is zero */
|
||||||
nano::error & nano::error::then (std::function<nano::error &()> next)
|
nano::error & nano::error::then (std::function<nano::error &()> next)
|
||||||
|
|
@ -486,6 +494,7 @@ nano::error & nano::error::clear ()
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
// TODO: theoretically, nothing besides template (partial) specializations should ever be added inside std...
|
// TODO: theoretically, nothing besides template (partial) specializations should ever be added inside std...
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|
@ -494,3 +503,4 @@ std::error_code make_error_code (boost::system::errc::errc_t const & e)
|
||||||
return std::error_code (static_cast<int> (e), ::nano::error_conversion::generic_category ());
|
return std::error_code (static_cast<int> (e), ::nano::error_conversion::generic_category ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
@ -196,6 +196,13 @@ REGISTER_ERROR_CODES (nano, error_rpc);
|
||||||
REGISTER_ERROR_CODES (nano, error_process);
|
REGISTER_ERROR_CODES (nano, error_process);
|
||||||
REGISTER_ERROR_CODES (nano, error_config);
|
REGISTER_ERROR_CODES (nano, error_config);
|
||||||
|
|
||||||
|
#if BOOST_VERSION >= 107800
|
||||||
|
/* no need for error_code bridge */
|
||||||
|
#else
|
||||||
|
# define NANO_USE_BOOST_TO_STD_ERROR_BRIDGE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
/* boost->std error_code bridge */
|
/* boost->std error_code bridge */
|
||||||
namespace nano
|
namespace nano
|
||||||
{
|
{
|
||||||
|
|
@ -232,6 +239,7 @@ namespace error_conversion
|
||||||
std::error_code convert (boost::system::error_code const & error);
|
std::error_code convert (boost::system::error_code const & error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace nano
|
namespace nano
|
||||||
{
|
{
|
||||||
|
|
@ -244,18 +252,24 @@ public:
|
||||||
error (nano::error && error_a) = default;
|
error (nano::error && error_a) = default;
|
||||||
|
|
||||||
error (std::error_code code_a);
|
error (std::error_code code_a);
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
error (boost::system::error_code const & code_a);
|
error (boost::system::error_code const & code_a);
|
||||||
|
#endif
|
||||||
error (std::string message_a);
|
error (std::string message_a);
|
||||||
error (std::exception const & exception_a);
|
error (std::exception const & exception_a);
|
||||||
error & operator= (nano::error const & err_a);
|
error & operator= (nano::error const & err_a);
|
||||||
error & operator= (nano::error && err_a);
|
error & operator= (nano::error && err_a);
|
||||||
error & operator= (std::error_code code_a);
|
error & operator= (std::error_code code_a);
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
error & operator= (boost::system::error_code const & code_a);
|
error & operator= (boost::system::error_code const & code_a);
|
||||||
error & operator= (boost::system::errc::errc_t const & code_a);
|
error & operator= (boost::system::errc::errc_t const & code_a);
|
||||||
|
#endif
|
||||||
error & operator= (std::string message_a);
|
error & operator= (std::string message_a);
|
||||||
error & operator= (std::exception const & exception_a);
|
error & operator= (std::exception const & exception_a);
|
||||||
bool operator== (std::error_code code_a) const;
|
bool operator== (std::error_code code_a) const;
|
||||||
|
#if defined(NANO_USE_BOOST_TO_STD_ERROR_BRIDGE)
|
||||||
bool operator== (boost::system::error_code code_a) const;
|
bool operator== (boost::system::error_code code_a) const;
|
||||||
|
#endif
|
||||||
error & then (std::function<nano::error &()> next);
|
error & then (std::function<nano::error &()> next);
|
||||||
template <typename... ErrorCode>
|
template <typename... ErrorCode>
|
||||||
error & accept (ErrorCode... err)
|
error & accept (ErrorCode... err)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <boost/functional/hash.hpp>
|
||||||
#include <boost/multiprecision/cpp_int.hpp>
|
#include <boost/multiprecision/cpp_int.hpp>
|
||||||
|
|
||||||
namespace nano
|
namespace nano
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue