Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

Exception.hpp

00001 #if !defined (__EXCEPTION_HPP)
00002 #define __EXCEPTION_HPP
00003 
00004 /*
00005   CoreLinux++ 
00006   Copyright (C) 1999 CoreLinux Consortium
00007   
00008    The CoreLinux++ Library is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Library General Public License as
00010    published by the Free Software Foundation; either version 2 of the
00011    License, or (at your option) any later version.
00012 
00013    The CoreLinux++ Library Library is distributed in the hope that it will 
00014    be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016    Library General Public License for more details.
00017 
00018    You should have received a copy of the GNU Library General Public
00019    License along with the GNU C Library; see the file COPYING.LIB.  If not,
00020    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021    Boston, MA 02111-1307, USA.  
00022 */   
00023 
00024 #if !defined IN_COMMON_HPP
00025    #error except.hpp is included by common.hpp only.
00026 #endif
00027 
00028 #include <string>
00029 //
00030 // Base exception class
00031 //
00032 
00033 
00034 namespace corelinux
00035 {
00036 
00037 
00038    DECLARE_CLASS( Exception );
00039 
00040    // Define a reference to line number
00041 
00042    DECLARE_TYPE( Dword, LineNum );
00043 
00044 
00051    class Exception 
00052    {
00053    
00054    public:
00055    
00056    
00058 
00059       enum Severity
00060       {
00061          CONTINUABLE = 1,     
00062          THREADFATAL,         
00063          PROCESSFATAL,        
00064          THREADTERMINATE,     
00065          PROCESSTERMINATE     
00066       };
00067    
00068                      
00078                         Exception
00079                         (
00080                            CharCptr why,
00081                            CharCptr file,
00082                            LineNum  line,
00083                            Severity severity = Exception::CONTINUABLE,
00084                            bool     outOfMemory = false 
00085                         );
00086    
00092                         Exception( ExceptionCref crOther );
00093    
00095    
00096       virtual           ~Exception(void);
00097    
00098          //
00099          // Operator overloads
00100          //
00101    
00108                ExceptionRef   operator = ( ExceptionCref otherRef );
00109             
00116                bool           operator==( ExceptionCref otherRef );
00117             
00118          //
00119          // Accessor methods
00120          //
00121    
00128                const std::string &    getFile( void ) const;
00129             
00136                LineNumCref       getLine( void ) const;
00137             
00143                const std::string &    getWhy( void ) const;
00144             
00150                const Severity &  getSeverity( void ) const;
00151             
00157                const std::string &    getUnwind( void ) const;   
00158             
00164                bool           isOutOfMemory( void ) const 
00165                   { return theOutOfMemoryFlag;}
00166             
00167          //
00168          // Mutator methods
00169          //
00170    
00177                void           addUnwindInfo( CharCptr unwindInfo );
00178             
00180             
00181                void           setThreadFatalSeverity( void );
00182             
00184             
00185                void           setProcessFatalSeverity( void );
00186             
00193                void           setThreadTerminateSeverity( void );
00194             
00200                void           setProcessTerminateSeverity( void );
00201    
00202    protected:
00203    
00209                         Exception( void );
00210    
00215                         Exception
00216                         (
00217                            CharCptr file,
00218                            LineNum  line,
00219                            Severity severity = Exception::CONTINUABLE,
00220                            bool     outOfMemory = false 
00221                         );
00222    
00224             
00225                void     setWhy( const std::string & );
00226 
00228 
00229                void     setWhy( CharCptr );
00230    
00231    private:
00232    
00233    
00234    private:
00235    
00236                // Reason why the exception is being thrown.
00237       
00238                std::string      theReason;
00239    
00240                // File that threw the exception.
00241             
00242                std::string      theFile;
00243             
00244                // Severity of the exception.
00245             
00246                Severity    theSeverity;
00247             
00248                // Unwind information added as exception is unwound from 
00249                // stack.
00250             
00251                std::string      theUnwindInfo;
00252             
00253                // Line number in the file throwing the exception.
00254             
00255                LineNum     theLine;
00256             
00257                // Flag that indicates if there is a low memory situation.
00258             
00259                bool        theOutOfMemoryFlag;
00260    };
00261 
00262 }
00263 
00264 
00265 #endif  // !defined __EXCEPTION_HPP
00266 
00267 /*
00268    Common rcs information do not modify
00269    $Author: frankc $
00270    $Revision: 1.2 $
00271    $Date: 2000/07/28 01:37:09 $
00272    $Locker:  $
00273 */
00274 
00275 

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium