mirror of
https://github.com/boostorg/system.git
synced 2025-07-31 21:14:26 +02:00
Move code/condition comparisons back outside class error_code; fixes #91
This commit is contained in:
@@ -58,12 +58,14 @@ namespace system
|
|||||||
// and error_code containing a pointer to an object of a type derived
|
// and error_code containing a pointer to an object of a type derived
|
||||||
// from error_category.
|
// from error_category.
|
||||||
|
|
||||||
|
bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT;
|
||||||
std::size_t hash_value( error_code const & ec );
|
std::size_t hash_value( error_code const & ec );
|
||||||
|
|
||||||
class error_code
|
class error_code
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
friend bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT;
|
||||||
friend std::size_t hash_value( error_code const & ec );
|
friend std::size_t hash_value( error_code const & ec );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -438,48 +440,6 @@ public:
|
|||||||
return !( lhs == rhs );
|
return !( lhs == rhs );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline friend bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
|
||||||
|
|
||||||
if( code.lc_flags_ == 1 )
|
|
||||||
{
|
|
||||||
return static_cast<std::error_code>( code ) == static_cast<std::error_condition>( condition );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline friend bool operator==( const error_condition & condition, const error_code & code ) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
|
||||||
|
|
||||||
if( code.lc_flags_ == 1 )
|
|
||||||
{
|
|
||||||
return static_cast<std::error_code>( code ) == static_cast<std::error_condition>( condition );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline friend bool operator!=( const error_code & lhs, const error_condition & rhs ) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
return !( lhs == rhs );
|
|
||||||
}
|
|
||||||
|
|
||||||
inline friend bool operator!=( const error_condition & lhs, const error_code & rhs ) BOOST_NOEXCEPT
|
|
||||||
{
|
|
||||||
return !( lhs == rhs );
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
||||||
|
|
||||||
inline friend bool operator==( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT
|
inline friend bool operator==( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT
|
||||||
@@ -682,6 +642,37 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
||||||
|
|
||||||
|
if( code.lc_flags_ == 1 )
|
||||||
|
{
|
||||||
|
return static_cast<std::error_code>( code ) == static_cast<std::error_condition>( condition );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator==( const error_condition & condition, const error_code & code ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return code == condition;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator!=( const error_code & lhs, const error_condition & rhs ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return !( lhs == rhs );
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator!=( const error_condition & lhs, const error_code & rhs ) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return !( lhs == rhs );
|
||||||
|
}
|
||||||
|
|
||||||
inline std::size_t hash_value( error_code const & ec )
|
inline std::size_t hash_value( error_code const & ec )
|
||||||
{
|
{
|
||||||
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR)
|
||||||
|
@@ -56,8 +56,8 @@ int main()
|
|||||||
BOOST_TEST_EQ( ec, enomem_n );
|
BOOST_TEST_EQ( ec, enomem_n );
|
||||||
BOOST_TEST_EQ( enomem_n, ec );
|
BOOST_TEST_EQ( enomem_n, ec );
|
||||||
|
|
||||||
// BOOST_TEST_EQ( en, enomem_c );
|
BOOST_TEST_EQ( en, enomem_c );
|
||||||
// BOOST_TEST_EQ( enomem_c, en );
|
BOOST_TEST_EQ( enomem_c, en );
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user