Program Listing for File errors.hpp
↰ Return to documentation for file (include/ecl/sigslots_lite/errors.hpp
)
/*****************************************************************************
** Ifdefs
*****************************************************************************/
#ifndef ECL_SIGSLOTS_LITE_ERRORS_HPP_
#define ECL_SIGSLOTS_LITE_ERRORS_HPP_
/*****************************************************************************
** Namespaces
*****************************************************************************/
namespace ecl {
namespace lite {
namespace sigslots {
enum ErrorFlag {
NoError = 0,
UnknownError = -1,
OutOfResourcesError = -21,
};
class Error {
public:
Error(const sigslots::ErrorFlag& flag = UnknownError) : error_flag(flag) {}
virtual sigslots::ErrorFlag flag() const { return error_flag; }
virtual const char* what() const {
switch (error_flag) {
case (NoError) : { return noErrorString(); }
case (OutOfResourcesError) : { return outOfResourcesErrorString(); }
default : { return unknownErrorString(); }
}
}
private:
const char* noErrorString() const { return "No error."; }
const char* unknownErrorString() const { return "Unknown error."; }
const char* outOfResourcesErrorString() const { return "You cannot add any more to this signal/slot interface (capacity is already fully utilised)."; }
ErrorFlag error_flag;
};
} // namespace sigslots
} // namespace lite
} // namespace ecl
#endif /* ECL_SIGSLOTS_LITE_ERRORS_HPP_ */