+/*
+ * Copyright (C) 2005 Casper S. Hornstrup
+ *
+ * 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
+ * (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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
#ifndef __EXCEPTION_H
#define __EXCEPTION_H
#include "pch.h"
+#include "xml.h"
class Exception
{
Exception ( const std::string& message );
Exception ( const char* format,
...);
- std::string Message;
+ const std::string& operator *() { return _e; }
+
protected:
Exception ();
- void SetMessage ( const char* message,
- va_list args );
+ void SetMessage ( const char* message, ... );
+ void SetMessageV ( const char* message, va_list args );
+
+private:
+ std::string _e;
+};
+
+
+class MissingArgumentException : public Exception
+{
+public:
+ MissingArgumentException ( const std::string& argument );
};
std::string Filename;
};
-class InvalidBuildFileException : public Exception
+class InvalidDateException : public Exception
{
public:
- InvalidBuildFileException ( const std::string& location,
- const char* message,
- ...);
- void SetLocationMessage ( const std::string& location,
- const char* message,
- va_list args );
-protected:
- InvalidBuildFileException ();
-};
-
-
-class XMLSyntaxErrorException : public InvalidBuildFileException
-{
-public:
- XMLSyntaxErrorException ( const std::string& location,
- const char* message,
- ... );
+ InvalidDateException ( const std::string& filename );
+ std::string Filename;
};
-
-class RequiredAttributeNotFoundException : public InvalidBuildFileException
+class RequiredAttributeNotFoundException : public XMLInvalidBuildFileException
{
public:
RequiredAttributeNotFoundException ( const std::string& location,
};
-class InvalidAttributeValueException : public InvalidBuildFileException
+class InvalidAttributeValueException : public XMLInvalidBuildFileException
{
public:
InvalidAttributeValueException ( const std::string& location,
UnknownBackendException ( const std::string& name );
};
-class UnknownModuleTypeException : public InvalidBuildFileException
+class UnknownModuleTypeException : public XMLInvalidBuildFileException
{
public:
UnknownModuleTypeException ( const std::string& location,
int ExitCode;
};
+
+class UnsupportedBuildToolException : public Exception
+{
+public:
+ UnsupportedBuildToolException ( const std::string& buildtool,
+ const std::string& version );
+ std::string BuildTool;
+ std::string Version;
+};
+
#endif /* __EXCEPTION_H */