summaryrefslogtreecommitdiff
path: root/libpqpp/pq-error.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libpqpp/pq-error.cpp')
-rw-r--r--libpqpp/pq-error.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/libpqpp/pq-error.cpp b/libpqpp/pq-error.cpp
new file mode 100644
index 0000000..0d0299c
--- /dev/null
+++ b/libpqpp/pq-error.cpp
@@ -0,0 +1,34 @@
+#include "pq-error.h"
+#include <string.h>
+
+PQ::Error::Error() :
+ msg(NULL)
+{
+}
+
+PQ::Error::Error(const PQ::Error & e) :
+ msg(e.msg ? strdup(e.msg) : NULL)
+{
+}
+
+PQ::Error::Error(const char * e) :
+ msg(e ? strdup(e) : NULL)
+{
+}
+
+PQ::Error::~Error() throw()
+{
+ free(msg);
+}
+
+const char *
+PQ::Error::what() const throw()
+{
+ return msg ? msg : "No message";
+}
+
+PQ::ConnectionError::ConnectionError(const PGconn * conn) :
+ PQ::Error(PQerrorMessage(conn))
+{
+}
+