1 /* 2 ** doomerrors.h 3 ** Contains error classes that can be thrown around 4 ** 5 **--------------------------------------------------------------------------- 6 ** Copyright 1998-2006 Randy Heit 7 ** All rights reserved. 8 ** 9 ** Redistribution and use in source and binary forms, with or without 10 ** modification, are permitted provided that the following conditions 11 ** are met: 12 ** 13 ** 1. Redistributions of source code must retain the above copyright 14 ** notice, this list of conditions and the following disclaimer. 15 ** 2. Redistributions in binary form must reproduce the above copyright 16 ** notice, this list of conditions and the following disclaimer in the 17 ** documentation and/or other materials provided with the distribution. 18 ** 3. The name of the author may not be used to endorse or promote products 19 ** derived from this software without specific prior written permission. 20 ** 21 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 **--------------------------------------------------------------------------- 32 ** 33 */ 34 35 #ifndef __ERRORS_H__ 36 #define __ERRORS_H__ 37 38 #include <string.h> 39 #include <stdio.h> 40 41 #define MAX_ERRORTEXT 1024 42 43 class CDoomError 44 { 45 public: CDoomError()46 CDoomError () 47 { 48 m_Message[0] = '\0'; 49 } CDoomError(const char * message)50 CDoomError (const char *message) 51 { 52 SetMessage (message); 53 } SetMessage(const char * message)54 void SetMessage (const char *message) 55 { 56 strncpy (m_Message, message, MAX_ERRORTEXT-1); 57 m_Message[MAX_ERRORTEXT-1] = '\0'; 58 } GetMessage(void)59 const char *GetMessage (void) const 60 { 61 if (m_Message[0] != '\0') 62 return (const char *)m_Message; 63 else 64 return NULL; 65 } 66 67 private: 68 char m_Message[MAX_ERRORTEXT]; 69 }; 70 71 class CNoRunExit : public CDoomError 72 { 73 }; 74 75 class CRecoverableError : public CDoomError 76 { 77 public: CRecoverableError()78 CRecoverableError() : CDoomError() {} CRecoverableError(const char * message)79 CRecoverableError(const char *message) : CDoomError(message) {} 80 }; 81 82 class CFatalError : public CDoomError 83 { 84 public: CFatalError()85 CFatalError() : CDoomError() {} CFatalError(const char * message)86 CFatalError(const char *message) : CDoomError(message) {} 87 }; 88 89 #endif //__ERRORS_H__ 90