summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/konforka/exception.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/konforka/exception.h b/include/konforka/exception.h
index 5e0bf96..dbfe27c 100644
--- a/include/konforka/exception.h
+++ b/include/konforka/exception.h
@@ -21,16 +21,47 @@
/**
* @def NOCODEPOINT
* the convenience definition for the codepoint denoting no particular point in
* code.
*/
#define NOCODEPOINT "no information"
/**
+ * @def KONFORKA_RETHROW
+ * the convenience definition for seeing the exception and rethrowing it further.
+ */
+#define KONFORKA_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw; }
+
+/**
+ * @def KONFORKA_E_ARGS
+ * the convenience definition for naming codepoint parameters
+ */
+#define KONFORKA_E_PARS const string& fi,const string& fu,int l,const string& w
+
+/**
+ * @def KONFORKA_E_CONS
+ * the convenience definition for passing parameters to constructor
+ */
+#define KONFORKA_E_CONS fi,fu,l,w
+
+/**
+ * @def KONFORKA_E_SUBCLASS
+ * the convenience definition for subclassing konforka exceptions
+ * @param base base class
+ * @param derived derived class
+ */
+#define KONFORKA_E_SUBCLASS(derived,base) \
+ class derived : public base { \
+ public: \
+ explicit derived(KONFORKA_E_PARS) \
+ : base(KONFORKA_E_CONS) { } \
+ }
+
+/**
* @brief The main konforka namespace.
*/
namespace konforka {
using std::string;
using std::list;
/**
* @brief Pinpoint the code context.