00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _ELECTROMETER_EXCEPTION
00015 #define _ELECTROMETER_EXCEPTION
00016
00017 #include <string>
00018 #include <vector>
00019
00020 namespace electrometer{
00021
00022
00023
00024
00025 typedef enum {
00026 WARN,
00027 ERR,
00028 PANIC
00029 } ErrorSeverity;
00030
00031
00033
00037
00038 class Error
00039 {
00040 public:
00041
00045 Error (void);
00046
00050 Error (const char *reason,
00051 const char *desc,
00052 const char *origin,
00053 int severity = electrometer::ERR);
00054
00055
00059 Error (const std::string& reason,
00060 const std::string& desc,
00061 const std::string& origin,
00062 int severity = electrometer::ERR);
00063
00067 Error (const Error& src);
00068
00072 virtual ~Error (void);
00073
00077 Error& operator= (const Error& _src);
00078
00082 std::string reason;
00083
00087 std::string desc;
00088
00092 std::string origin;
00093
00097 int severity;
00098
00099 };
00100
00101
00102
00103
00104 typedef std::vector<Error> ErrorList;
00105
00106
00107
00109
00113
00114 class ElectrometerException
00115 {
00116 public:
00117
00121 ElectrometerException (void);
00122
00126 ElectrometerException (const char *reason,
00127 const char *desc,
00128 const char *origin,
00129 int severity = electrometer::ERR);
00130
00134 ElectrometerException (const std::string& reason,
00135 const std::string& desc,
00136 const std::string& origin,
00137 int severity = electrometer::ERR);
00138
00142 ElectrometerException (const Error& error);
00143
00144
00148 ElectrometerException (const ElectrometerException& src);
00149
00153 ElectrometerException& operator= (const ElectrometerException& _src);
00154
00158 virtual ~ElectrometerException (void);
00159
00163 void push_error (const char *reason,
00164 const char *desc,
00165 const char *origin,
00166 int severity = electrometer::ERR);
00167
00171 void push_error (const std::string& reason,
00172 const std::string& desc,
00173 const std::string& origin,
00174 int severity = electrometer::ERR);
00175
00179 void push_error (const Error& error);
00180
00184 ErrorList errors;
00185
00186
00187 };
00188
00189 }
00190 #endif //_ELECTROMETER_EXCEPTION
00191
00192