root/libbase/GnashException.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// 
//   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:

/* [<][>][^][v][top][bottom][index][help] */