diff --git a/include/dbus-c++/error.h b/include/dbus-c++/error.h index 57a6471..3f191fe 100644 --- a/include/dbus-c++/error.h +++ b/include/dbus-c++/error.h @@ -46,6 +46,8 @@ class DXXAPI Error : public std::exception Error(const char *name, const char *message); + Error(const std::string &name, const std::string &message); + Error(Message &); ~Error() throw(); @@ -59,6 +61,8 @@ class DXXAPI Error : public std::exception void set(const char *name, const char *message); // parameters MUST be static strings + void set(const std::string &name, const std::string &message); + bool is_set() const; operator bool() const diff --git a/src/error.cpp b/src/error.cpp index 7b2d119..c71cc3c 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -52,6 +52,12 @@ Error::Error(const char *name, const char *message) set(name, message); } +Error::Error(const std::string &name, const std::string &message) + : _int(new InternalError) +{ + set(name, message); +} + Error::Error(Message &m) : _int(new InternalError) { @@ -82,6 +88,11 @@ void Error::set(const char *name, const char *message) dbus_set_error_const(&(_int->error), name, message); } +void Error::set(const std::string &name, const std::string &message) +{ + dbus_set_error(&(_int->error), name.c_str(), "%s", message.c_str()); +} + const char *Error::what() const throw() { return _int->error.message;