| 1 | 1 /* | 
|  | 2     Copyright 2009 Stéphane De Mita, Mathieu Siol | 
|  | 3 | 
|  | 4     This file is part of the EggLib library. | 
|  | 5 | 
|  | 6     EggLib is free software: you can redistribute it and/or modify | 
|  | 7     it under the terms of the GNU General Public License as published by | 
|  | 8     the Free Software Foundation, either version 3 of the License, or | 
|  | 9     (at your option) any later version. | 
|  | 10 | 
|  | 11     EggLib is distributed in the hope that it will be useful, | 
|  | 12     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 14     GNU General Public License for more details. | 
|  | 15 | 
|  | 16     You should have received a copy of the GNU General Public License | 
|  | 17     along with EggLib.  If not, see <http://www.gnu.org/licenses/>. | 
|  | 18 */ | 
|  | 19 | 
|  | 20 #ifndef EGGLIB_EGGEXCEPTION_HPP | 
|  | 21 #define EGGLIB_EGGEXCEPTION_HPP | 
|  | 22 | 
|  | 23 #include <string> | 
|  | 24 #include <exception> | 
|  | 25 | 
|  | 26 namespace egglib { | 
|  | 27 | 
|  | 28     /** \brief Base exception type for errors occurring in this library | 
|  | 29      * | 
|  | 30      * \ingroup core | 
|  | 31      * | 
|  | 32      */ | 
|  | 33     class EggException : public std::exception { | 
|  | 34         public: | 
|  | 35             /// Constructor with empty error message | 
|  | 36             EggException(); | 
|  | 37             /// Creates the exception | 
|  | 38             EggException(const char* message); | 
|  | 39             /// Destructor | 
|  | 40             ~EggException() throw() {} | 
|  | 41             /// Gets error message | 
|  | 42             virtual const char* what() const throw(); | 
|  | 43 | 
|  | 44       protected: | 
|  | 45             std::string message; | 
|  | 46 | 
|  | 47     }; | 
|  | 48 | 
|  | 49 | 
|  | 50     /** \brief Exception type for memory errors | 
|  | 51      * | 
|  | 52      * \ingroup core | 
|  | 53      * | 
|  | 54      */ | 
|  | 55     class EggMemoryError : public EggException { | 
|  | 56         public: | 
|  | 57             /// Creates the exception | 
|  | 58             EggMemoryError(); | 
|  | 59             /// Destructor | 
|  | 60             ~EggMemoryError() throw() {} | 
|  | 61     }; | 
|  | 62 | 
|  | 63 | 
|  | 64     /** \brief Exception type for argument value errors | 
|  | 65      * | 
|  | 66      * \ingroup core | 
|  | 67      * | 
|  | 68      */ | 
|  | 69     class EggArgumentValueError : public EggException { | 
|  | 70         public: | 
|  | 71             /// Creates the exception | 
|  | 72             EggArgumentValueError(const char* m ); | 
|  | 73             /// Destructor | 
|  | 74             ~EggArgumentValueError() throw() {} | 
|  | 75     }; | 
|  | 76 | 
|  | 77 | 
|  | 78     /** \brief Exception type for runtime errors | 
|  | 79      * | 
|  | 80      * Runtime error definition is rather large. Includes bugs as well | 
|  | 81      * as logical errors. | 
|  | 82      * | 
|  | 83      * \ingroup core | 
|  | 84      * | 
|  | 85      */ | 
|  | 86     class EggRuntimeError : public EggException { | 
|  | 87         public: | 
|  | 88             /// Creates the exception | 
|  | 89             EggRuntimeError(const char* m ); | 
|  | 90             /// Destructor | 
|  | 91             ~EggRuntimeError() throw() {} | 
|  | 92     }; | 
|  | 93 | 
|  | 94 | 
|  | 95     /** \brief Exception type for file/string formatting errors | 
|  | 96      * | 
|  | 97      * \ingroup core | 
|  | 98      * | 
|  | 99      */ | 
|  | 100     class EggFormatError : public EggException { | 
|  | 101         public: | 
|  | 102             /// Creates the exception | 
|  | 103             EggFormatError(const char* fileName, const char* expectedFormat, const char* m); | 
|  | 104             /// Destructor | 
|  | 105             ~EggFormatError() throw() {} | 
|  | 106             /// Gets the file name | 
|  | 107             std::string fileName() const; | 
|  | 108             /// Gets the expected format | 
|  | 109             std::string expectedFormat() const; | 
|  | 110             /// Formats a longer string | 
|  | 111             virtual const char* what_more() const; | 
|  | 112 | 
|  | 113         protected: | 
|  | 114             std::string fname; | 
|  | 115             std::string eformat; | 
|  | 116     }; | 
|  | 117 | 
|  | 118 | 
|  | 119     /** \brief Exception type for errors while opening a file | 
|  | 120      * | 
|  | 121      * \ingroup core | 
|  | 122      * | 
|  | 123      */ | 
|  | 124     class EggOpenFileError : public EggException { | 
|  | 125         public: | 
|  | 126             /// Creates the exception | 
|  | 127             EggOpenFileError(const char* fileName ); | 
|  | 128             /// Destructor | 
|  | 129             ~EggOpenFileError() throw() {} | 
|  | 130     }; | 
|  | 131 | 
|  | 132 | 
|  | 133     /** \brief Exception type for unaligned sequences | 
|  | 134      * | 
|  | 135      * \ingroup core | 
|  | 136      * | 
|  | 137      */ | 
|  | 138     class EggUnalignedError : public EggException { | 
|  | 139         public: | 
|  | 140            /** \brief Creates the exception | 
|  | 141             * | 
|  | 142             */ | 
|  | 143             EggUnalignedError(); | 
|  | 144 | 
|  | 145            /** \brief Destructor | 
|  | 146             * | 
|  | 147             */ | 
|  | 148             ~EggUnalignedError() throw() {} | 
|  | 149     }; | 
|  | 150 | 
|  | 151    /** \brief Exception type for invalid character | 
|  | 152     * | 
|  | 153     * \ingroup core | 
|  | 154     * | 
|  | 155     */ | 
|  | 156     class EggInvalidCharacterError : public EggException { | 
|  | 157         public: | 
|  | 158            /** \brief Creates the exception | 
|  | 159             * | 
|  | 160             */ | 
|  | 161             EggInvalidCharacterError(char c, unsigned int seqIndex, unsigned int posIndex); | 
|  | 162 | 
|  | 163            /** \brief Destructor | 
|  | 164             * | 
|  | 165             */ | 
|  | 166             ~EggInvalidCharacterError() throw() {} | 
|  | 167     }; | 
|  | 168 | 
|  | 169 } | 
|  | 170 | 
|  | 171 | 
|  | 172 | 
|  | 173 #endif |