summaryrefslogtreecommitdiffabout
path: root/include
Unidiff
Diffstat (limited to 'include') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/exception.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/include/opkele/exception.h b/include/opkele/exception.h
index 2ac0661..c5f5811 100644
--- a/include/opkele/exception.h
+++ b/include/opkele/exception.h
@@ -19,25 +19,26 @@
19 * the exception parameters list to pass to constructor 19 * the exception parameters list to pass to constructor
20 */ 20 */
21# define OPKELE_E_CONS_ fi,fu,l, 21# define OPKELE_E_CONS_ fi,fu,l,
22/** 22/**
23 * the exception codepoint specification 23 * the exception codepoint specification
24 */ 24 */
25# define OPKELE_CP_ CODEPOINT, 25# define OPKELE_CP_ CODEPOINT,
26/** 26/**
27 * the simple rethrow of konforka-based exception 27 * the simple rethrow of konforka-based exception
28 */ 28 */
29# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw } 29# define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw }
30#else /* OPKELE_HAVE_KONFORKA */ 30#else /* OPKELE_HAVE_KONFORKA */
31# include <stdexcept> 31# include <exception>
32# include <string>
32/** 33/**
33 * the exception parameter declaration 34 * the exception parameter declaration
34 */ 35 */
35# define OPKELE_E_PARS const string& w 36# define OPKELE_E_PARS const string& w
36/** 37/**
37 * the dummy prefix for exception parameters list to prepend in the absence of 38 * the dummy prefix for exception parameters list to prepend in the absence of
38 * konforka library 39 * konforka library
39 */ 40 */
40# define OPKELE_E_CONS_ 41# define OPKELE_E_CONS_
41/** 42/**
42 * the dummy placeholder for konforka exception codepoint specification 43 * the dummy placeholder for konforka exception codepoint specification
43 */ 44 */
@@ -65,27 +66,30 @@ namespace opkele {
65# ifdef OPKELE_HAVE_KONFORKA 66# ifdef OPKELE_HAVE_KONFORKA
66 konforka::exception 67 konforka::exception
67# else 68# else
68 std::exception 69 std::exception
69# endif 70# endif
70 { 71 {
71 public: 72 public:
72# ifdef OPKELE_HAVE_KONFORKA 73# ifdef OPKELE_HAVE_KONFORKA
73 explicit 74 explicit
74 exception(const string& fi,const string& fu,int l,const string& w) 75 exception(const string& fi,const string& fu,int l,const string& w)
75 : konforka::exception(fi,fu,l,w) { } 76 : konforka::exception(fi,fu,l,w) { }
76# else /* OPKELE_HAVE_KONFORKA */ 77# else /* OPKELE_HAVE_KONFORKA */
78 string _what;
77 explicit 79 explicit
78 exception(const string& w) 80 exception(const string& w)
79 : std::exception(w) { } 81 : _what(w) { }
82 virtual ~exception() throw();
83 virtual const char * what() const throw();
80# endif /* OPKELE_HAVE_KONFORKA */ 84# endif /* OPKELE_HAVE_KONFORKA */
81 }; 85 };
82 86
83 /** 87 /**
84 * thrown in case of failed conversion 88 * thrown in case of failed conversion
85 */ 89 */
86 class failed_conversion : public exception { 90 class failed_conversion : public exception {
87 public: 91 public:
88 failed_conversion(OPKELE_E_PARS) 92 failed_conversion(OPKELE_E_PARS)
89 : exception(OPKELE_E_CONS) { } 93 : exception(OPKELE_E_CONS) { }
90 }; 94 };
91 /** 95 /**