Преглед на файлове

Declared int return type for lua_gcobject().
Added lua state reset and deregister.

woollybah преди 8 години
родител
ревизия
8c926a3089
променени са 2 файла, в които са добавени 16 реда и са изтрити 3 реда
  1. 1 1
      maxlua.mod/lua_object.c
  2. 15 2
      maxlua.mod/maxlua.bmx

+ 1 - 1
maxlua.mod/lua_object.c

@@ -32,7 +32,7 @@ BBObject *lua_tolightobject( lua_State *L,int index ){
 	return (BBObject*)( lua_touserdata( L,index ) );
 }
 
-void lua_gcobject( lua_State *L ){
+int lua_gcobject( lua_State *L ){
 	void *p;
 	p=lua_touserdata( L,1 );
 	struct BBObjectContainer * uc = *(struct BBObjectContainer**)p;

+ 15 - 2
maxlua.mod/maxlua.bmx

@@ -27,12 +27,16 @@ Function lua_boxobject( L:Byte Ptr,obj:Object )
 Function lua_unboxobject:Object( L:Byte Ptr,index )
 Function lua_pushlightobject( L:Byte Ptr,obj:Object )
 Function lua_tolightobject:Object( L:Byte Ptr,index )
-Function lua_gcobject( L:Byte Ptr )
+Function lua_gcobject:Int( L:Byte Ptr )
 
 End Extern
 
-Function LuaState:Byte Ptr()
+Function LuaState:Byte Ptr(reset:Int = False)
 	Global _luaState:Byte Ptr
+	If reset And _luaState Then
+		lua_close(_luaState)
+		_luaState = Null
+	End If
 	If Not _luaState
 		_luaState=luaL_newstate()
 		luaL_openlibs _luaState
@@ -453,3 +457,12 @@ End Rem
 Function LuaRegisterObject( obj:Object,name$ )
 	lua_registerobject LuaState(),obj,name
 End Function
+
+Function LuaDeregisterObject(name:String)
+	lua_pushnil(LuaState())
+	lua_setglobal(LuaState(), name)
+End Function
+
+Function LuaShutdown()
+	LuaState(True)
+End Function