base Json::Exception
diff --git a/include/json/value.h b/include/json/value.h
index b752fb8..1cd6291 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -11,6 +11,7 @@
#endif // if !defined(JSON_IS_AMALGAMATION)
#include <string>
#include <vector>
+#include <exception>
#ifndef JSON_USE_CPPTL_SMALLMAP
#include <map>
@@ -32,6 +33,18 @@
*/
namespace Json {
+/** Base class for all exceptions we throw.
+ */
+class Exception : public std::exception {
+public:
+ Exception(std::string const& msg);
+ virtual ~Exception() throw();
+ virtual char const* what() const throw();
+protected:
+ std::string const& msg_;
+ void* future_use_;
+};
+
/** \brief Type of the value held by a Value object.
*/
enum ValueType {
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index 4e032ce..f7d2cde 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -152,6 +152,18 @@
namespace Json {
+Exception::Exception(std::string const& msg)
+ : msg_(msg)
+ , future_use_(NULL)
+{
+}
+Exception::~Exception() throw()
+{}
+char const* Exception::what() const throw()
+{
+ return msg_.c_str();
+}
+
// //////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////