exception.h

00001 /***************************************************************************
00002  *   Copyright (C) 2005-2008 by the FIFE team                              *
00003  *   http://www.fifengine.de                                               *
00004  *   This file is part of FIFE.                                            *
00005  *                                                                         *
00006  *   FIFE is free software; you can redistribute it and/or                 *
00007  *   modify it under the terms of the GNU Lesser General Public            *
00008  *   License as published by the Free Software Foundation; either          *
00009  *   version 2.1 of the License, or (at your option) any later version.    *
00010  *                                                                         *
00011  *   This library is distributed in the hope that it will be useful,       *
00012  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00013  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00014  *   Lesser General Public License for more details.                       *
00015  *                                                                         *
00016  *   You should have received a copy of the GNU Lesser General Public      *
00017  *   License along with this library; if not, write to the                 *
00018  *   Free Software Foundation, Inc.,                                       *
00019  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
00020  ***************************************************************************/
00021 
00022 #ifndef FIFE_EXCEPTION_H
00023 #define FIFE_EXCEPTION_H
00024 
00025 // Standard C++ library includes
00026 #include <string>
00027 
00028 // 3rd party library includes
00029 
00030 // FIFE includes
00031 // These includes are split up in two parts, separated by one empty line
00032 // First block: files included from the FIFE root src directory
00033 // Second block: files included from the same folder
00034 
00035 namespace FIFE {
00036 
00041     class Exception {
00042     public:
00046         Exception(const std::string& msg);
00047 
00050         virtual ~Exception();
00051 
00055         std::string getMessage() const;
00056         
00057         virtual const std::string& getTypeStr() const { static const std::string s = "Exception"; return s; }
00058         virtual const std::string& getDescription() const { static const std::string s = "Generic FIFE exception"; return s; }
00059 
00060     private:
00061         // The error string.
00062         std::string m_message;
00063     };
00064 
00065     #define FIFE_EXCEPTION_DECL(_name, _description) \
00066     class _name : public Exception { \
00067     public: \
00068         _name(const std::string& msg) : Exception(msg) {} \
00069         const std::string& getTypeStr() const { static const std::string s = #_name; return s; } \
00070         const std::string& getDescription() const { static const std::string s = _description; return s; } \
00071     }
00072     
00073     FIFE_EXCEPTION_DECL(SDLException, "SDL reported something bad");
00074     FIFE_EXCEPTION_DECL(NotFound, "Something was searched, but not found");
00075     FIFE_EXCEPTION_DECL(NotSet, "Something was not set correctly");
00076     FIFE_EXCEPTION_DECL(IndexOverflow, "Someone tried to access a non-existing element");
00077     FIFE_EXCEPTION_DECL(InvalidFormat, "Found invalid data");
00078     FIFE_EXCEPTION_DECL(CannotOpenFile, "File couldn't be opened");
00079     FIFE_EXCEPTION_DECL(InvalidConversion, "Tried an invalid conversion");
00080     FIFE_EXCEPTION_DECL(NotSupported, "This action was not supported");
00081     FIFE_EXCEPTION_DECL(NameClash, "A name or identifier is already in use");
00082     FIFE_EXCEPTION_DECL(Duplicate, "A duplicate item was added, where this is not allowed");
00083     FIFE_EXCEPTION_DECL(ScriptException, "Error related to scripting functionality");
00084     FIFE_EXCEPTION_DECL(EventException, "Error related to event functionality");
00085     FIFE_EXCEPTION_DECL(GuiException, "Error related to gui functionality");
00086     FIFE_EXCEPTION_DECL(InconsistencyDetected, "An inconsistency in FIFE internals was detected. Please report this is a FIFE Bug.");
00087     
00089     FIFE_EXCEPTION_DECL(OutOfMemory, "Buy more ram ;)");
00090 
00091 
00092 }//FIFE
00093 
00094 #endif
Generated by  doxygen 1.6.2-20100208