Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

exceptions_AMOS.hh

Go to the documentation of this file.
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 #ifndef __exceptions_AMOS_HH 00011 #define __exceptions_AMOS_HH 1 00012 00013 #include "inttypes_AMOS.hh" 00014 #include <string> 00015 #include <exception> 00016 #include <iostream> 00017 00018 00019 00020 00021 namespace AMOS { 00022 00023 //================================================ Exception_t ================= 00029 //============================================================================== 00030 class Exception_t : public std::exception 00031 { 00032 00033 private: 00034 00035 std::string what_m; 00036 int line_m; 00037 std::string file_m; 00038 00039 00040 00041 public: 00042 00043 //---------------------------------------------- Exception_t ----------------- 00050 Exception_t (const std::string & what, 00051 int line = 0, 00052 const std::string & file = NULL_STRING) 00053 : what_m (what), line_m (line), file_m (file) 00054 { } 00055 00056 00057 //---------------------------------------------- ~Exception_t ---------------- 00060 ~Exception_t ( ) throw() 00061 { } 00062 00063 00064 //---------------------------------------------- file ------------------------ 00067 virtual const char * file ( ) const 00068 { 00069 return file_m . c_str( ); 00070 } 00071 00072 00073 //---------------------------------------------- line ------------------------ 00076 virtual int line ( ) const 00077 { 00078 return line_m; 00079 } 00080 00081 00082 //---------------------------------------------- what ------------------------ 00085 virtual const char * what ( ) const throw( ) 00086 { 00087 return what_m . c_str( ); 00088 } 00089 00090 }; 00091 00092 00093 00094 00095 //================================================ AlignmentException_t ======== 00101 //============================================================================== 00102 class AlignmentException_t : public Exception_t 00103 { 00104 00105 private: 00106 00107 int a_id_m; 00108 int b_id_m; 00109 00110 00111 public: 00112 00113 //---------------------------------------------- AlignmentException_t -------- 00122 AlignmentException_t (const std::string & what, 00123 int line = 0, 00124 const std::string & file = NULL_STRING, 00125 int a_id = -1, 00126 int b_id = -1) 00127 : Exception_t (what, line, file), a_id_m (a_id), b_id_m (b_id) 00128 { } 00129 00130 00131 //---------------------------------------------- a_id ------------------------ 00134 virtual const int a_id ( ) const 00135 { 00136 return a_id_m; 00137 } 00138 00139 00140 //---------------------------------------------- b_id ------------------------ 00143 virtual const int b_id ( ) const 00144 { 00145 return b_id_m; 00146 } 00147 00148 00149 }; 00150 00151 00152 00153 00154 //================================================ AllocException_t ============ 00160 //============================================================================== 00161 class AllocException_t : public Exception_t 00162 { 00163 00164 public: 00165 00166 //---------------------------------------------- AllocException_t ------------ 00173 AllocException_t (const std::string & what, 00174 int line = 0, 00175 const std::string & file = NULL_STRING) 00176 : Exception_t (what, line, file) 00177 { } 00178 00179 }; 00180 00181 00182 00183 00184 //================================================ ArgumentException_t ========= 00193 //============================================================================== 00194 class ArgumentException_t : public Exception_t 00195 { 00196 00197 public: 00198 00199 //---------------------------------------------- ArgumentException_t --------- 00206 ArgumentException_t (const std::string & what, 00207 int line = 0, 00208 const std::string & file = NULL_STRING) 00209 : Exception_t (what, line, file) 00210 { } 00211 00212 }; 00213 00214 00215 00216 00217 //================================================ IOException_t =============== 00224 //============================================================================== 00225 class IOException_t : public Exception_t 00226 { 00227 00228 public: 00229 00230 //---------------------------------------------- IOException_t --------------- 00237 IOException_t (const std::string & what, 00238 int line = 0, 00239 const std::string & file = NULL_STRING) 00240 : Exception_t (what, line, file) 00241 { } 00242 00243 }; 00244 00245 00246 00247 00248 //----------------------------------------------------- operator<< ------------- 00251 inline std::ostream & operator<< (std::ostream & out, const Exception_t & e) 00252 { 00253 out << "WHAT: " << e . what( ) << std::endl; 00254 out << "LINE: " << e . line( ) << std::endl; 00255 out << "FILE: " << e . file( ) << std::endl; 00256 return out; 00257 } 00258 00259 00260 //----------------------------------------------------- operator<< ------------- 00263 inline std::ostream & operator<< (std::ostream & out, const std::exception & e) 00264 { 00265 out << "WHAT: " << e . what( ) << std::endl; 00266 return out; 00267 } 00268 00269 } // namespace AMOS 00270 00271 00272 //-- Helpful exception throw macros 00273 #define AMOS_THROW(A) throw Exception_t(A,__LINE__,__FILE__) 00274 #define AMOS_THROW_ALLOC(A) throw AllocException_t(A,__LINE__,__FILE__) 00275 #define AMOS_THROW_ARGUMENT(A) throw ArgumentException_t(A,__LINE__,__FILE__) 00276 #define AMOS_THROW_IO(A) throw IOException_t(A,__LINE__,__FILE__) 00277 00278 00279 #endif // #ifndef __exceptions_AMOS_HH

Generated on Tue May 17 15:19:01 2005 for libAMOS by doxygen 1.3.8