/* [<][>][^][v][top][bottom][index][help] */
//
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
// 2011 Free Software Foundation, Inc
//
// 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 3 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 St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef GNASH_GNASHEXCEPTION_H
#define GNASH_GNASHEXCEPTION_H
#include <stdexcept>
#include <string>
#include "dsodefs.h"
namespace gnash
{
/// Top-level gnash exception
class DSOEXPORT GnashException: public std::runtime_error
{
public:
GnashException(const std::string& s)
:
std::runtime_error(s)
{}
GnashException()
:
std::runtime_error("Generic error")
{}
virtual ~GnashException() throw() {}
};
/// An exception from MediaHandler subsystem
class DSOEXPORT MediaException : public GnashException
{
public:
MediaException(const std::string& s)
:
GnashException(s)
{}
MediaException()
:
GnashException("Media error")
{}
virtual ~MediaException() throw() {}
};
/// An exception from SoundHandler subsystem
class DSOEXPORT SoundException : public GnashException
{
public:
SoundException(const std::string& s)
:
GnashException(s)
{}
SoundException()
:
GnashException("Audio error")
{}
virtual ~SoundException() throw() {}
};
/// An SWF parsing exception
class DSOEXPORT ParserException : public GnashException
{
public:
ParserException(const std::string& s)
:
GnashException(s)
{}
ParserException()
:
GnashException("Parser error")
{}
virtual ~ParserException() throw() {}
};
/// An ActionScript error exception
class ActionException: public GnashException
{
protected:
ActionException(const std::string& s)
:
GnashException(s)
{}
ActionException()
:
GnashException("ActionScript error")
{}
public:
virtual ~ActionException() throw() {}
};
/// An ActionScript limit exception
//
/// When this exception is thrown, current execution should
/// be aborted, stacks and registers cleaning included.
///
class ActionLimitException: public ActionException
{
public:
ActionLimitException(const std::string& s)
:
ActionException(s)
{}
ActionLimitException()
:
ActionException("ActionScript limit hit")
{}
virtual ~ActionLimitException() throw() {}
};
/// An ActionScript type error
//
/// This exception can be thrown by as_value::to_primitive when an object
/// can't be converted to a primitive value or by native function when
/// they are called as method of an unexpected type
///
class ActionTypeError: public ActionException
{
public:
ActionTypeError(const std::string& s)
:
ActionException(s)
{}
ActionTypeError()
:
ActionException("ActionTypeError")
{}
virtual ~ActionTypeError() throw() {}
};
/// An action parsing error, thrown on illegal
/// action buffer access.
class ActionParserException: public ActionException
{
public:
ActionParserException(const std::string& s)
:
ActionException(s)
{}
ActionParserException()
:
ActionException("Action parser exception")
{}
virtual ~ActionParserException() throw() {}
};
/// An unhandled exception in ActionScript, which should
/// interrupt code execution.
class ActionScriptException: public ActionException
{
public:
ActionScriptException(const std::string& s)
:
ActionException(s)
{}
ActionScriptException()
:
ActionException("Unhandled ActionScript exception")
{}
virtual ~ActionScriptException() throw() {}
};
} // namespace gnash
#endif // def GNASH_GNASHEXCEPTION_H
// Local Variables:
// mode: C++
// c-basic-offset: 8
// tab-width: 8
// indent-tabs-mode: t
// End: