#include <cstring>
#include <system_error>
#include <bits/functexcept.h>
#include <limits>
namespace
{
using std::string;
struct generic_error_category : public std::error_category
{
generic_error_category() {}
virtual const char*
name() const
{ return "generic"; }
virtual string
message(int i) const
{
return string(strerror(i));
}
};
struct system_error_category : public std::error_category
{
system_error_category() {}
virtual const char*
name() const
{ return "system"; }
virtual string
message(int i) const
{
return string(strerror(i));
}
};
const generic_error_category generic_category_instance;
const system_error_category system_category_instance;
}
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
error_category::error_category() = default;
error_category::~error_category() = default;
const error_category&
system_category() throw() { return system_category_instance; }
const error_category&
generic_category() throw() { return generic_category_instance; }
system_error::~system_error() throw() = default;
error_condition
error_category::default_error_condition(int __i) const
{ return error_condition(__i, *this); }
bool
error_category::equivalent(int __i, const error_condition& __cond) const
{ return default_error_condition(__i) == __cond; }
bool
error_category::equivalent(const error_code& __code, int __i) const
{ return *this == __code.category() && __code.value() == __i; }
error_condition
error_code::default_error_condition() const
{ return category().default_error_condition(value()); }
_GLIBCXX_END_NAMESPACE_VERSION
}