forked from zhouxingtuan/eproto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.cpp
39 lines (36 loc) · 975 Bytes
/
script.cpp
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
//
// Created by IntelliJ IDEA.
// User: AppleTree
// Date: 16/5/29
// Time: 上午9:10
// To change this template use File | Settings | File Templates.
//
#include "script.h"
Script::Script(void) : m_pState(NULL) {
}
Script::~Script(void){
if(NULL != m_pState){
lua_close(m_pState); // 先关闭自己
}
}
void Script::setState(lua_State* pState){
if(pState==NULL){
m_pState = luaL_newstate();
lua_pop( m_pState, luaopen_base( m_pState ) );
lua_pop( m_pState, luaopen_math( m_pState ) );
lua_pop( m_pState, 1 );
// Save a pointer to the thread Manager object in the global table
// using the new thread script vm pointer as a key.
lua_pushlightuserdata( m_pState, m_pState );
lua_pushlightuserdata( m_pState, this );
lua_settable( m_pState, LUA_GLOBALSINDEX );
}else{
m_pState = pState;
}
// open standard libs
luaL_openlibs( m_pState );
lua_settop( m_pState, 0 );
// open eproto
luaopen_eproto_cpp(m_pState);
luaopen_eproto(m_pState);
}