Merge trunk HEAD (r46369)
[reactos.git] / reactos / tools / rbuild / exception.h
index 90ef6b3..c095285 100644 (file)
-#ifndef __EXCEPTION_H\r
-#define __EXCEPTION_H\r
-\r
-#include "pch.h"\r
-\r
-class Exception\r
-{\r
-public:\r
-       Exception(const std::string& message);\r
-       Exception(const char* format,\r
-                 ...);\r
-       std::string Message;\r
-protected:\r
-       Exception();\r
-       void SetMessage(const char* message,\r
-                       va_list args);\r
-};\r
-\r
-\r
-class FileNotFoundException : public Exception\r
-{\r
-public:\r
-       FileNotFoundException(const std::string& filename);\r
-       std::string Filename;\r
-};\r
-\r
-\r
-class AccessDeniedException : public Exception\r
-{\r
-public:\r
-       AccessDeniedException(const std::string& filename);\r
-       std::string Filename;\r
-};\r
-\r
-\r
-class InvalidBuildFileException : public Exception\r
-{\r
-public:\r
-       InvalidBuildFileException(const char* message,\r
-                                 ...);\r
-};\r
-\r
-\r
-class RequiredAttributeNotFoundException : public InvalidBuildFileException\r
-{\r
-public:\r
-       RequiredAttributeNotFoundException(const std::string& attributeName,\r
-                                          const std::string& elementName);\r
-};\r
-\r
-\r
-class InvalidAttributeValueException : public InvalidBuildFileException\r
-{\r
-public:\r
-       InvalidAttributeValueException(const std::string& name,\r
-                                      const std::string& value);\r
-};\r
-\r
-#endif /* __EXCEPTION_H */\r
+/*
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#pragma once
+
+#include "pch.h"
+#include "xml.h"
+
+class Exception
+{
+public:
+       Exception ( const std::string& message );
+       Exception ( const char* format,
+                   ...);
+       const std::string& operator *() { return _e; }
+
+protected:
+       Exception ();
+       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 );
+};
+
+
+class InvalidOperationException : public Exception
+{
+public:
+       InvalidOperationException ( const char* filename,
+                                   const int linenumber);
+       InvalidOperationException ( const char* filename,
+                                   const int linenumber,
+                                   const char* message,
+                                   ... );
+};
+
+
+class OutOfMemoryException : public Exception
+{
+public:
+       OutOfMemoryException ();
+};
+
+
+class FileNotFoundException : public Exception
+{
+public:
+       FileNotFoundException ( const std::string& filename );
+       std::string Filename;
+};
+
+
+class AccessDeniedException : public Exception
+{
+public:
+       AccessDeniedException ( const std::string& filename );
+       std::string Filename;
+};
+
+class InvalidDateException : public Exception
+{
+public:
+       InvalidDateException ( const std::string& filename );
+       std::string Filename;
+};
+
+class RequiredAttributeNotFoundException : public XMLInvalidBuildFileException
+{
+public:
+       RequiredAttributeNotFoundException ( const std::string& location,
+                                            const std::string& attributeName,
+                                            const std::string& elementName );
+};
+
+
+class InvalidAttributeValueException : public XMLInvalidBuildFileException
+{
+public:
+       InvalidAttributeValueException ( const std::string& location,
+                                        const std::string& name,
+                                        const std::string& value );
+};
+
+
+class BackendNameConflictException : public Exception
+{
+public:
+       BackendNameConflictException ( const std::string& name );
+};
+
+
+class UnknownBackendException : public Exception
+{
+public:
+       UnknownBackendException ( const std::string& name );
+};
+
+class UnknownModuleTypeException : public XMLInvalidBuildFileException
+{
+public:
+       UnknownModuleTypeException ( const std::string& location,
+                                    int moduletype );
+};
+
+
+class InvocationFailedException : public Exception
+{
+public:
+       InvocationFailedException ( const std::string& command,
+                                   int exitcode );
+       std::string Command;
+       int ExitCode;
+};
+
+
+class UnsupportedBuildToolException : public Exception
+{
+public:
+       UnsupportedBuildToolException ( const std::string& buildtool,
+                                       const std::string& version );
+       std::string BuildTool;
+       std::string Version;
+};