The Battle for Wesnoth  1.19.0-dev
Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Protected Attributes | Private Member Functions | Static Private Member Functions | List of all members
lua_jailbreak_exception Class Referenceabstract

Base class for exceptions that want to be thrown 'through' lua. More...

#include <lua_jailbreak_exception.hpp>

Inheritance diagram for lua_jailbreak_exception:

Public Member Functions

virtual ~lua_jailbreak_exception () noexcept
 
void store () const noexcept
 Stores a copy the current exception to be rethrown. More...
 

Static Public Member Functions

static void rethrow ()
 Rethrows the stored exception. More...
 

Static Public Attributes

static int jail_depth = 0
 Depth of recursive luaW_pcall_internal() function calls. More...
 

Static Protected Attributes

static lua_jailbreak_exceptionjailbreak_exception = nullptr
 The exception to be rethrown. More...
 

Private Member Functions

virtual lua_jailbreak_exceptionclone () const =0
 Creates a copy of the current exception. More...
 
virtual void execute ()=0
 Executes the exception. More...
 

Static Private Member Functions

static void clear () noexcept
 Clears the current exception. More...
 

Detailed Description

Base class for exceptions that want to be thrown 'through' lua.

Classes derived from this class must call this->store() in all of their constructors and use the IMPLEMENT_LUA_JAILBREAK_EXCEPTION macro in the class definition. No other classes may derive from classes derived from this class.

Definition at line 26 of file lua_jailbreak_exception.hpp.

Constructor & Destructor Documentation

◆ ~lua_jailbreak_exception()

virtual lua_jailbreak_exception::~lua_jailbreak_exception ( )
inlinevirtualnoexcept

Definition at line 29 of file lua_jailbreak_exception.hpp.

Member Function Documentation

◆ clear()

void lua_jailbreak_exception::clear ( )
staticprivatenoexcept

Clears the current exception.

Definition at line 64 of file lua_jailbreak_exception.cpp.

References jailbreak_exception.

Referenced by rethrow().

◆ clone()

virtual lua_jailbreak_exception* lua_jailbreak_exception::clone ( ) const
privatepure virtual

Creates a copy of the current exception.

The copy is allocated with new and is implemented by the IMPLEMENT_LUA_JAILBREAK_EXCEPTION macro.

Note
it's implemented by the subclass to avoid slicing.
Returns
A pointer to a copy of the class on the heap.

Referenced by store().

◆ execute()

virtual void lua_jailbreak_exception::execute ( )
privatepure virtual

Executes the exception.

Throws a copy of the stored jailbreak_exception. The caller is responsible for clearing jailbreak_exception after the throw. The function is implemented by the IMPLEMENT_LUA_JAILBREAK_EXCEPTION macro.

Note
it's implemented by the subclass to avoid slicing.
Precondition
jailbreak_exception != nullptr

Referenced by rethrow().

◆ rethrow()

void lua_jailbreak_exception::rethrow ( )
static

Rethrows the stored exception.

It is safe to call this function is no exception is stored.

Definition at line 38 of file lua_jailbreak_exception.cpp.

References clear(), execute(), jail_depth, and jailbreak_exception.

Referenced by intf_pcall(), and luaW_pcall_internal().

◆ store()

void lua_jailbreak_exception::store ( ) const
noexcept

Member Data Documentation

◆ jail_depth

int lua_jailbreak_exception::jail_depth = 0
static

Depth of recursive luaW_pcall_internal() function calls.

Definition at line 32 of file lua_jailbreak_exception.hpp.

Referenced by luaW_pcall_internal(), rethrow(), and store().

◆ jailbreak_exception

lua_jailbreak_exception * lua_jailbreak_exception::jailbreak_exception = nullptr
staticprotected

The exception to be rethrown.

Definition at line 47 of file lua_jailbreak_exception.hpp.

Referenced by clear(), rethrow(), and store().


The documentation for this class was generated from the following files: