/*
-Minetest-c55
-Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+GNU Lesser General Public License for more details.
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef EXCEPTIONS_HEADER
-#define EXCEPTIONS_HEADER
+#pragma once
#include <exception>
+#include <string>
+
class BaseException : public std::exception
{
public:
- BaseException(const char *s)
- {
- m_s = s;
- }
+ BaseException(const std::string &s) throw(): m_s(s) {}
+ ~BaseException() throw() = default;
+
virtual const char * what() const throw()
{
- return m_s;
+ return m_s.c_str();
}
- const char *m_s;
+protected:
+ std::string m_s;
};
-class AsyncQueuedException : public BaseException
-{
+class AlreadyExistsException : public BaseException {
public:
- AsyncQueuedException(const char *s):
- BaseException(s)
- {}
+ AlreadyExistsException(const std::string &s): BaseException(s) {}
};
-class NotImplementedException : public BaseException
-{
+class VersionMismatchException : public BaseException {
public:
- NotImplementedException(const char *s):
- BaseException(s)
- {}
+ VersionMismatchException(const std::string &s): BaseException(s) {}
};
-class AlreadyExistsException : public BaseException
-{
+class FileNotGoodException : public BaseException {
public:
- AlreadyExistsException(const char *s):
- BaseException(s)
- {}
+ FileNotGoodException(const std::string &s): BaseException(s) {}
};
-class VersionMismatchException : public BaseException
-{
+class DatabaseException : public BaseException {
public:
- VersionMismatchException(const char *s):
- BaseException(s)
- {}
+ DatabaseException(const std::string &s): BaseException(s) {}
};
-class FileNotGoodException : public BaseException
-{
+class SerializationError : public BaseException {
public:
- FileNotGoodException(const char *s):
- BaseException(s)
- {}
+ SerializationError(const std::string &s): BaseException(s) {}
};
-class SerializationError : public BaseException
-{
+class PacketError : public BaseException {
public:
- SerializationError(const char *s):
- BaseException(s)
- {}
+ PacketError(const std::string &s): BaseException(s) {}
};
-class LoadError : public BaseException
-{
+class SettingNotFoundException : public BaseException {
public:
- LoadError(const char *s):
- BaseException(s)
- {}
+ SettingNotFoundException(const std::string &s): BaseException(s) {}
};
-class ContainerFullException : public BaseException
-{
+class InvalidFilenameException : public BaseException {
public:
- ContainerFullException(const char *s):
- BaseException(s)
- {}
+ InvalidFilenameException(const std::string &s): BaseException(s) {}
};
-class SettingNotFoundException : public BaseException
-{
+class ItemNotFoundException : public BaseException {
public:
- SettingNotFoundException(const char *s):
- BaseException(s)
- {}
+ ItemNotFoundException(const std::string &s): BaseException(s) {}
};
-class InvalidFilenameException : public BaseException
-{
+class ServerError : public BaseException {
public:
- InvalidFilenameException(const char *s):
- BaseException(s)
- {}
+ ServerError(const std::string &s): BaseException(s) {}
};
-class ProcessingLimitException : public BaseException
-{
+class ClientStateError : public BaseException {
public:
- ProcessingLimitException(const char *s):
- BaseException(s)
- {}
+ ClientStateError(const std::string &s): BaseException(s) {}
+};
+
+class PrngException : public BaseException {
+public:
+ PrngException(const std::string &s): BaseException(s) {}
+};
+
+class ModError : public BaseException {
+public:
+ ModError(const std::string &s): BaseException(s) {}
};
+
/*
Some "old-style" interrupts:
*/
+class InvalidNoiseParamsException : public BaseException {
+public:
+ InvalidNoiseParamsException():
+ BaseException("One or more noise parameters were invalid or require "
+ "too much memory")
+ {}
+
+ InvalidNoiseParamsException(const std::string &s):
+ BaseException(s)
+ {}
+};
+
class InvalidPositionException : public BaseException
{
public:
InvalidPositionException():
BaseException("Somebody tried to get/set something in a nonexistent position.")
{}
- InvalidPositionException(const char *s):
+ InvalidPositionException(const std::string &s):
BaseException(s)
{}
};
-
-class TargetInexistentException : public std::exception
-{
- virtual const char * what() const throw()
- {
- return "Somebody tried to refer to something that doesn't exist.";
- }
-};
-
-class NullPointerException : public std::exception
-{
- virtual const char * what() const throw()
- {
- return "NullPointerException";
- }
-};
-
-#endif
-