summaryrefslogtreecommitdiffabout
Unidiff
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
@@ -1,76 +1,107 @@
1#ifndef __KONFORKA_EXCEPTION_H 1#ifndef __KONFORKA_EXCEPTION_H
2#define __KONFORKA_EXCEPTION_H 2#define __KONFORKA_EXCEPTION_H
3 3
4#include <exception> 4#include <exception>
5#include <string> 5#include <string>
6#include <list> 6#include <list>
7 7
8/** 8/**
9 * @file 9 * @file
10 * @brief exception-related stuff. 10 * @brief exception-related stuff.
11 * 11 *
12 * Basic exception-related declarations and definitions. 12 * Basic exception-related declarations and definitions.
13 */ 13 */
14 14
15/** 15/**
16 * @def CODEPOINT 16 * @def CODEPOINT
17 * the convenience definition of the parameters passed to the 17 * the convenience definition of the parameters passed to the
18 * konforka::code_point constructor. 18 * konforka::code_point constructor.
19 */ 19 */
20 #defineCODEPOINT __FILE__,__PRETTY_FUNCTION__,__LINE__ 20 #defineCODEPOINT __FILE__,__PRETTY_FUNCTION__,__LINE__
21/** 21/**
22 * @def NOCODEPOINT 22 * @def NOCODEPOINT
23 * the convenience definition for the codepoint denoting no particular point in 23 * the convenience definition for the codepoint denoting no particular point in
24 * code. 24 * code.
25 */ 25 */
26#define NOCODEPOINT "no information" 26#define NOCODEPOINT "no information"
27 27
28/** 28/**
29 * @def KONFORKA_RETHROW
30 * the convenience definition for seeing the exception and rethrowing it further.
31 */
32#define KONFORKA_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw; }
33
34/**
35 * @def KONFORKA_E_ARGS
36 * the convenience definition for naming codepoint parameters
37 */
38#define KONFORKA_E_PARS const string& fi,const string& fu,int l,const string& w
39
40/**
41 * @def KONFORKA_E_CONS
42 * the convenience definition for passing parameters to constructor
43 */
44#define KONFORKA_E_CONS fi,fu,l,w
45
46/**
47 * @def KONFORKA_E_SUBCLASS
48 * the convenience definition for subclassing konforka exceptions
49 * @param base base class
50 * @param derived derived class
51 */
52#define KONFORKA_E_SUBCLASS(derived,base) \
53 class derived : public base { \
54 public: \
55 explicit derived(KONFORKA_E_PARS) \
56 : base(KONFORKA_E_CONS) { } \
57 }
58
59/**
29 * @brief The main konforka namespace. 60 * @brief The main konforka namespace.
30 */ 61 */
31namespace konforka { 62namespace konforka {
32 using std::string; 63 using std::string;
33 using std::list; 64 using std::list;
34 65
35 /** 66 /**
36 * @brief Pinpoint the code context. 67 * @brief Pinpoint the code context.
37 * 68 *
38 * Class, holding the point in code, for instance, where the exception 69 * Class, holding the point in code, for instance, where the exception
39 * occured. 70 * occured.
40 */ 71 */
41 class code_point { 72 class code_point {
42 public: 73 public:
43 /** 74 /**
44 * The string describing the point in code. 75 * The string describing the point in code.
45 */ 76 */
46 string where; 77 string where;
47 /** 78 /**
48 * The file (as provided by __FILE__) if available. 79 * The file (as provided by __FILE__) if available.
49 */ 80 */
50 string file; 81 string file;
51 /** 82 /**
52 * The function name (as provided by __PRETTY_FUNCTION__) if 83 * The function name (as provided by __PRETTY_FUNCTION__) if
53 * available. 84 * available.
54 */ 85 */
55 string function; 86 string function;
56 /** 87 /**
57 * The line number (as provided by __LINE__) if available. 88 * The line number (as provided by __LINE__) if available.
58 */ 89 */
59 int line; 90 int line;
60 91
61 /** 92 /**
62 * Constructs the object, using only textual description of the 93 * Constructs the object, using only textual description of the
63 * point in code (no file, function, line information). 94 * point in code (no file, function, line information).
64 * @param w the description of the point in code. 95 * @param w the description of the point in code.
65 */ 96 */
66 code_point(const string& w); 97 code_point(const string& w);
67 /** 98 /**
68 * Constructs the object, specifying the exact position in code. 99 * Constructs the object, specifying the exact position in code.
69 * @param fi source file name. 100 * @param fi source file name.
70 * @param fu function name. 101 * @param fu function name.
71 * @param l the line number. 102 * @param l the line number.
72 */ 103 */
73 code_point(const string& fi,const string& fu,int l); 104 code_point(const string& fi,const string& fu,int l);
74 105
75 /** 106 /**
76 * Extract the information on the point in code. 107 * Extract the information on the point in code.