Added Q_FUNC_INFO macros to some functions.
[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         Error(char const *msg)
17                         : msg_(msg) {}
18
19         template <typename T>
20         void append_to_msg(T val) {
21                 msg_ << val;
22         }
23
24 private:
25         QString msg_;
26
27 };
28
29 template <typename T>
30 Error& operator << (Error &self, T val)
31 {
32         self.append_to_msg(val);
33         return self;
34 }
35
36 class InvalidArgument : public Error
37 {
38 };
39
40 template <typename T>
41 InvalidArgument& operator << (InvalidArgument &self, T val)
42 {
43         self.append_to_msg(val);
44         return self;
45 }
46
47 }
48
49 #endif // _QTRAPIDS_ERROR_HPP_
50