1#ifndef NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
2#define NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
5NEFORCE_BEGIN_NAMESPACE__
10class NEFORCE_API error_category :
public icomparable<error_category> {
12 error_category() noexcept = default;
13 virtual ~error_category() noexcept = default;
15 error_category(const error_category&) = delete;
16 error_category& operator=(const error_category&) = delete;
18 NEFORCE_NODISCARD virtual const
char*
name() const noexcept = 0;
19 NEFORCE_NODISCARD virtual
string message(
int32_t ev) const = 0;
21 NEFORCE_NODISCARD virtual error_condition default_error_condition(
int32_t ev) const noexcept;
23 NEFORCE_NODISCARD virtual
bool equivalent(
int code, const error_condition& condition) const noexcept;
24 NEFORCE_NODISCARD virtual
bool equivalent(const error_code& code,
int condition) const noexcept;
26 NEFORCE_NODISCARD
bool equal_to(const error_category& rhs) const noexcept {
return this == &rhs; }
27 NEFORCE_NODISCARD
bool less_than(
const error_category& rhs)
const noexcept {
28 return less<const error_category*>()(
this, &rhs);
33class NEFORCE_API generic_error_category final :
public error_category {
35 NEFORCE_NODISCARD
const char*
name() const noexcept
override {
return "generic"; }
37 NEFORCE_NODISCARD
string message(
int32_t ev)
const override;
39 NEFORCE_NODISCARD error_condition default_error_condition(
int32_t ev)
const noexcept override;
42NEFORCE_API
const error_category& generic_category() noexcept;
44inline error_code make_error_code(
errc e) noexcept;
45inline error_condition make_error_condition(
errc e) noexcept;
48class NEFORCE_API system_error_category final : public error_category {
50 NEFORCE_NODISCARD
const char*
name() const noexcept
override {
return "system"; }
52 NEFORCE_NODISCARD
string message(
int32_t ev)
const override;
54 NEFORCE_NODISCARD error_condition default_error_condition(
int32_t ev)
const noexcept override;
57NEFORCE_API
const error_category& system_category() noexcept;
59NEFORCE_END_NAMESPACE__
bool name(char *buffer, size_t size)
获取当前线程名称