File: lua.cxx

package info (click to toggle)
ptlib 2.10.4~dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 58,836 kB
  • sloc: cpp: 135,080; ansic: 8,534; yacc: 3,059; sh: 2,776; makefile: 1,082; lex: 390
file content (59 lines) | stat: -rw-r--r-- 998 bytes parent folder | download
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