Centralized assertion macros and made them obey JSON_USE_EXCEPTION.
diff --git a/include/json/assertions.h b/include/json/assertions.h
new file mode 100644
index 0000000..005ff71
--- /dev/null
+++ b/include/json/assertions.h
@@ -0,0 +1,23 @@
+// Copyright 2007-2010 Baptiste Lepilleur
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
+# define CPPTL_JSON_ASSERTIONS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+# include <json/config.h>
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+#if defined(JSON_USE_EXCEPTION)
+#define JSON_ASSERT( condition ) assert( condition ); // @todo <= change this into an exception throw
+#define JSON_FAIL_MESSAGE( message ) throw std::runtime_error( message );
+#else // defined(JSON_USE_EXCEPTION)
+#define JSON_ASSERT( condition ) assert( condition );
+#define JSON_FAIL_MESSAGE( message ) { std::cerr << message; exit(123); }
+#endif
+
+#define JSON_ASSERT_MESSAGE( condition, message ) if (!( condition )) { JSON_FAIL_MESSAGE( message ) }
+
+#endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED