Gizmo3D

gzExceptions.h

Go to the documentation of this file.
00001 //******************************************************************************
00002 // File         : gzExceptions.h
00003 // Module       : gzBase
00004 // Description  : Class definition of exception classes
00005 // Author       : Anders Modén      
00006 // Product      : GizmoBase 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden
00009 //          
00010 // NOTE:    GizmoBase is a platform abstraction utility layer for C++. It contains 
00011 //          design patterns and C++ solutions for the advanced programmer.
00012 //
00013 //
00014 // Revision History...                          
00015 //                                  
00016 // Who  Date    Description                     
00017 //                                  
00018 // AMO  980819  Created file    
00019 //
00020 //******************************************************************************
00021 
00022 #ifndef __GZ_EXCEPTIONS_H__
00023 #define __GZ_EXCEPTIONS_H__
00024 
00025 #include "gzBase.h"
00026 #include "gzDebug.h"
00027 
00037 //******************************************************************************
00038 // Class    : gzBaseError
00039 //                                  
00040 // Purpose  : Base class for gizmo exceptions
00041 //                                  
00042 // Notes    : - 
00043 //                                  
00044 // Revision History...                          
00045 //                                  
00046 // Who  Date    Description                     
00047 //                                  
00048 // AMO  980912  Created 
00049 //                                  
00050 //******************************************************************************
00052 class gzBaseError
00053 {
00054 public:
00055     GZ_BASE_EXPORT gzBaseError(const char *, gzInt errcode = 0 , gzMessageEncoding enc=GZ_MESSAGE_ENCODING_UTF8);
00056     GZ_BASE_EXPORT virtual ~gzBaseError();
00057 
00058     GZ_BASE_EXPORT virtual gzVoid       reportError()=0;
00059     GZ_BASE_EXPORT gzInt                getErrorCode() const;
00060     GZ_BASE_EXPORT gzString             getErrorString() const;
00061     GZ_BASE_EXPORT gzMessageEncoding    getMessageEncoding() const;
00062 
00063 protected:
00064     gzInt               m_errCode;
00065     gzString            m_errString;
00066     gzMessageEncoding   m_errMessEncode;
00067 };
00068 
00069 
00070 // **************** Warning exceptions *****************************************
00071 
00072 //******************************************************************************
00073 // Class    : gzWarningError
00074 //                                  
00075 // Purpose  : Warning exception
00076 //                                  
00077 // Notes    : - 
00078 //                                  
00079 // Revision History...                          
00080 //                                  
00081 // Who  Date    Description                     
00082 //                                  
00083 // AMO  980912  Created 
00084 //                                  
00085 //******************************************************************************
00087 class gzWarningError : public gzBaseError
00088 {
00089 public:
00090     typedef gzVoid (* ReportFunc)(const gzWarningError&);
00091 
00092     GZ_BASE_EXPORT gzWarningError(const char *, gzInt errcode = 0, gzMessageEncoding enc=GZ_MESSAGE_ENCODING_UTF8);
00093     GZ_BASE_EXPORT virtual ~gzWarningError();
00094 
00095     GZ_BASE_EXPORT virtual gzVoid       reportError();
00096     GZ_BASE_EXPORT static gzVoid        setReportFunction(ReportFunc foo);
00097 
00098 private:
00099     static ReportFunc   s_reportFunc;
00100 };
00101 
00102 
00103 // **************** FATAL! exceptions *****************************************
00104 
00105 //******************************************************************************
00106 // Class    : gzFatalError
00107 //                                  
00108 // Purpose  : Fatal exception
00109 //                                  
00110 // Notes    : Does not return. Terminates program.  
00111 //                                  
00112 // Revision History...                          
00113 //                                  
00114 // Who  Date    Description                     
00115 //                                  
00116 // AMO  980912  Created 
00117 //                                  
00118 //******************************************************************************
00120 class gzFatalError : public gzBaseError
00121 {
00122 public:
00123     typedef gzVoid (* ReportFunc)(const gzFatalError&);
00124 
00125     GZ_BASE_EXPORT gzFatalError(const char *, gzInt errcode = 0, gzMessageEncoding enc=GZ_MESSAGE_ENCODING_UTF8);
00126     GZ_BASE_EXPORT virtual ~gzFatalError();
00127 
00128     GZ_BASE_EXPORT virtual gzVoid       reportError();
00129     GZ_BASE_EXPORT static gzVoid        setReportFunction(ReportFunc foo);
00130 
00131 private:
00132     static ReportFunc s_reportFunc;
00133 };
00134 
00135 // These functions can be overrided to provide custom gzInterface
00136 // to exception reporting ...
00137 
00139 GZ_BASE_EXPORT gzVoid gzDefaultWarningHandler( const gzWarningError & );
00140 
00142 GZ_BASE_EXPORT gzVoid gzDefaultFatalHandler( const gzFatalError & );
00143 
00144 // ********************* THROW macros *****************************************
00145 
00146 class gzExceptionThrows
00147 {
00148 public:
00149 
00151 
00152     GZ_BASE_EXPORT static gzVoid gzThrowWarning(const char * fmt , ARG_DECL_LIST);
00153     GZ_BASE_EXPORT static gzVoid gzThrowWarning(gzMessageEncoding encoding , const char * fmt , ARG_DECL_LIST);
00154 
00155     GZ_BASE_EXPORT static gzVoid gzThrowWarning(const gzWideChar * fmtWide , ARG_DECL_LIST);
00156     GZ_BASE_EXPORT static gzVoid gzThrowWarning(gzMessageEncoding encoding , const gzWideChar * fmtWide , ARG_DECL_LIST);
00157 
00159     GZ_BASE_EXPORT static gzVoid gzThrowFatal(const char * fmt , ARG_DECL_LIST);
00160     GZ_BASE_EXPORT static gzVoid gzThrowFatal(gzMessageEncoding encoding , const char * fmt , ARG_DECL_LIST);
00161 
00162     GZ_BASE_EXPORT static gzVoid gzThrowFatal(const gzWideChar * fmtWide, ARG_DECL_LIST);
00163     GZ_BASE_EXPORT static gzVoid gzThrowFatal(gzMessageEncoding encoding , const gzWideChar * fmtWide , ARG_DECL_LIST);
00164 };
00165 
00166 #define gzThrowWarning gzExceptionThrows::gzThrowWarning
00167 #define gzThrowFatal gzExceptionThrows::gzThrowFatal
00168 
00169 #endif

Documentation for Gizmo3D generated at Wed Feb 20 11:54:04 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond