fix for div/0
[qtrapids] / src / include / qtrapids / error.hpp
1 #ifndef _QTRAPIDS_ERROR_HPP_
2 #define _QTRAPIDS_ERROR_HPP_
3
4 #include <QString>
5
6 namespace qtrapids
7 {
8
9     class Error
10     {
11     public:
12
13         Error()
14             : msg_("")
15         { }
16
17         Error(char const *msg)
18             : msg_(msg)
19         {}
20
21         template <typename T>
22         void append_to_msg(T val)
23         {
24             msg_ << val;
25         }
26
27     private:
28         QString msg_;
29
30     };
31
32     template <typename T>
33     Error& operator << (Error &self, T val)
34     {
35         self.append_to_msg(val);
36         return self;
37     }
38
39     class InvalidArgument : public Error
40     {
41     };
42
43     template <typename T>
44     InvalidArgument& operator << (InvalidArgument &self, T val)
45     {
46         self.append_to_msg(val);
47         return self;
48     }
49
50 }
51
52 #endif // _QTRAPIDS_ERROR_HPP_
53