reactos/tools/rbuild/exception.h
Amine Khaldi 84291d0d72 * Bring back rbuild build to be used until bug 6372 is fixed.
svn path=/branches/GSoC_2011/ThemesSupport/; revision=52691
2011-07-15 22:27:16 +00:00

147 lines
3.5 KiB
C++

/*
* 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;
};