00001 #ifndef PROTON_ERROR_CONDITION_H
00002 #define PROTON_ERROR_CONDITION_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "./internal/export.hpp"
00026 #include "./value.hpp"
00027 #include "./internal/config.hpp"
00028
00029 #include <string>
00030 #include <iosfwd>
00031
00032 struct pn_condition_t;
00033
00034 namespace proton {
00035
00037 class error_condition {
00039 error_condition(pn_condition_t* c);
00041
00042 public:
00044 error_condition() {}
00045
00048 PN_CPP_EXTERN error_condition(std::string description);
00049
00051 PN_CPP_EXTERN error_condition(std::string name, std::string description);
00052
00055 PN_CPP_EXTERN error_condition(std::string name, std::string description, proton::value properties);
00056
00057 #if PN_CPP_HAS_DEFAULTED_FUNCTIONS
00058 error_condition(const error_condition&) = default;
00059 error_condition(error_condition&&) = default;
00060 error_condition& operator=(const error_condition&) = default;
00061 error_condition& operator=(error_condition&&) = default;
00062 #endif
00063
00067 #if PN_CPP_HAS_EXPLICIT_CONVERSIONS
00068 PN_CPP_EXTERN explicit operator bool() const;
00069 #endif
00070
00072 PN_CPP_EXTERN bool operator!() const;
00073
00075 PN_CPP_EXTERN bool empty() const;
00076
00078 PN_CPP_EXTERN std::string name() const;
00079
00081 PN_CPP_EXTERN std::string description() const;
00082
00084 PN_CPP_EXTERN value properties() const;
00085
00087 PN_CPP_EXTERN std::string what() const;
00088
00089 private:
00090 std::string name_;
00091 std::string description_;
00092 proton::value properties_;
00093
00095 friend class internal::factory<error_condition>;
00097 };
00098
00100
00101 PN_CPP_EXTERN bool operator==(const error_condition& x, const error_condition& y);
00102 PN_CPP_EXTERN std::ostream& operator<<(std::ostream& o, const error_condition& err);
00104
00105 }
00106
00107 #endif // PROTON_ERROR_CONDITION_H