Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
Functor.h
1/***********************************************************************
2 created: Thu Jan 26 2006
3 author: Tomas Lindquist Olsen <tomas@famolsen.dk>
4
5 purpose: Defines interface for LuaFunctor class
6*************************************************************************/
7/***************************************************************************
8 * Copyright (C) 2004 - 2008 Paul D Turner & The CEGUI Development Team
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation the rights to use, copy, modify, merge, publish,
14 * distribute, sublicense, and/or sell copies of the Software, and to
15 * permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 * OTHER DEALINGS IN THE SOFTWARE.
28 ***************************************************************************/
29#ifndef _CEGUILuaFunctor_h_
30#define _CEGUILuaFunctor_h_
31
32#include "CEGUI/EventSet.h"
33
34struct lua_State;
35
36// Start of CEGUI namespace section
37namespace CEGUI
38{
39
40// forward declaration
41class LuaScriptModule;
42
48{
49public:
50 LuaFunctor(lua_State* state, int func, int selfIndex);
51 LuaFunctor(lua_State* state, const String& func, int selfIndex);
52
53 LuaFunctor(lua_State* state, const int func, const int selfIndex,
54 const String& error_handler);
55 LuaFunctor(lua_State* state, const String& func, const int selfIndex,
56 const String& error_handler);
57 LuaFunctor(lua_State* state, const int func, const int selfIndex,
58 const int error_handler);
59 LuaFunctor(lua_State* state, const String& func, const int selfIndex,
60 const int error_handler);
61
62 LuaFunctor(const LuaFunctor& cp);
64
65 bool operator()(const EventArgs& args) const;
66
74 const String& eventName,
75 const int funcIndex,
76 const int selfIndex,
77 const int error_handler,
78 lua_State* L);
79
85 static void pushNamedFunction(lua_State* L, const String& name);
86
87private:
94 void invalidateLuaRefs();
95
96 lua_State* L;
97 mutable int index;
98 int self;
99 mutable bool needs_lookup;
100 mutable String function_name;
101
103 mutable String d_errFuncName;
105 mutable int d_errFuncIndex;
107 mutable bool d_ourErrFuncIndex;
108
109 friend class LuaScriptModule;
110};
111
112} // namespace CEGUI
113
114#endif // end of guard _CEGUILuaFunctor_h_
Base class used as the argument to all subscribers Event object.
Definition EventArgs.h:51
Interface providing event signaling and handling.
Definition EventSet.h:167
Functor class used for subscribing Lua functions to CEGUI events.
Definition Functor.h:48
static Event::Connection SubscribeEvent(EventSet *self, const String &eventName, const int funcIndex, const int selfIndex, const int error_handler, lua_State *L)
function used to subscribe any Lua function as event handler. References using the Lua registry....
static void pushNamedFunction(lua_State *L, const String &name)
Pushes the Lua function named.
Interface for the LuaScriptModule class.
Definition ScriptModules/Lua/ScriptModule.h:60
String class used within the GUI system.
Definition String.h:64
Main namespace for Crazy Eddie's GUI Library.
Definition arch_overview.dox:1