1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
//
// hello.cxx
//
// Equivalence Pty. Ltd.
//
#include <ptlib.h>
#include <ptlib/pprocess.h>
#include <ptclib/lua.h>
#if P_LUA
#else
#error Cannot compile Lua test program without Lua support!
#endif
class LuaProcess : public PProcess
{
PCLASSINFO(LuaProcess, PProcess)
public:
void Main();
};
class MyClass {
public:
MyClass(const char * str)
: m_str(str)
{ }
const char * m_str;
PLUA_BINDING_START(MyClass)
PLUA_BINDING(print)
PLUA_BINDING_END()
PLUA_FUNCTION_NOARGS(print)
{
cerr << m_str << endl;
return 0;
}
};
PCREATE_PROCESS(LuaProcess)
void LuaProcess::Main()
{
PLua lua;
// populate the table
MyClass class1("class1");
class1.BindToInstance(lua, "class1");
MyClass class2("class2");
class2.BindToInstance(lua, "class2");
if (!lua.Run("class1.print()\nclass2.print()"))
cout << lua.GetLastErrorText() << endl;
}
// End of hello.cxx
|