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 Mon Feb 22 17:36:27 2010 for libAMOS by  doxygen 1.4.7