39 #include <ptbuildopts.h>
54 virtual bool LoadString(
const char * text);
56 virtual bool LoadFile(
const char * filename);
58 virtual bool Run(
const char * program = NULL);
60 virtual void OnError(
int code,
const PString & str);
62 operator lua_State * () {
return m_lua; }
64 virtual void SetValue(
const char * name,
const char * value);
65 virtual PString GetValue(
const char * name);
67 typedef int (*CFunction)(lua_State *L);
68 virtual void SetFunction(
const char * name, CFunction func);
70 bool CallLuaFunction(
const char * name);
71 bool CallLuaFunction(
const char * name,
const char * sig, ...);
73 static int TraceFunction(lua_State * L);
75 PString GetLastErrorText()
const
76 {
return m_lastErrorText; }
78 void BindToInstanceStart(
const char * instanceName);
79 void BindToInstanceFunc(
const char * lua_name,
void * obj, CFunction func);
80 void BindToInstanceEnd(
const char * instanceName);
82 static void * GetInstance(lua_State * L);
89 #define PLUA_BINDING_START(class_type) \
90 typedef class_type PLua_InstanceType; \
91 void UnbindFromInstance(PLua &, const char *) { } \
92 void BindToInstance(PLua & lua, const char * instanceName) \
94 lua.BindToInstanceStart(instanceName);
96 #define PLUA_BINDING2(cpp_name, lua_name) \
97 lua.BindToInstanceFunc(lua_name, (void *)this, &PLua_InstanceType::cpp_name##_callback);
99 #define PLUA_BINDING(fn_name) \
100 PLUA_BINDING2(fn_name, #fn_name)
102 #define PLUA_BINDING_END() \
103 lua.BindToInstanceEnd(instanceName); \
106 #define PLUA_FUNCTION_DECL(fn_name) \
107 static int fn_name##_callback(lua_State * L) \
109 return ((PLua_InstanceType *)PLua::GetInstance(L))->fn_name(L); \
112 #define PLUA_FUNCTION(fn_name) \
113 PLUA_FUNCTION_DECL(fn_name) \
114 int fn_name(lua_State * L) \
116 #define PLUA_FUNCTION_NOARGS(fn_name) \
117 PLUA_FUNCTION_DECL(fn_name) \
118 int fn_name(lua_State *) \
120 #define PLUA_DECLARE_FUNCTION(fn_name) \
121 PLUA_FUNCTION_DECL(fn_name) \
122 int fn_name(lua_State * L); \
129 #endif // PTLIB_LUA_H
The character string class.
Definition: pstring.h:108