public LuaThreadWrapper(LuaFunction function) : base() { Logger.Log(string.Format("LuaThreadWrapper.ctor/1: {0}", LuaNativeMethods.lua_gettop(function.VariablePointer))); this.state = LuaState.Get(function.VariablePointer); this.thread = LuaNativeMethods.lua_newthread(function.VariablePointer); this.valueref = LuaNativeMethods.luaL_ref(function.VariablePointer, LuaIndexes.LUARegistryIndex); function.Push(function.VariablePointer); LuaNativeMethods.lua_xmove(function.VariablePointer, this.thread, 1); Logger.Log(string.Format("LuaThreadWrapper.ctor/2: {0}", LuaNativeMethods.lua_gettop(function.VariablePointer))); }
public static void Register(IntPtr ptr) { LuaObject.GetTypeTable(ptr, "Slua"); LuaObject.AddMember(ptr, CreateAction, false); LuaObject.AddMember(ptr, CreateClass, false); LuaObject.AddMember(ptr, GetClass, false); LuaObject.AddMember(ptr, Iterator, false); LuaObject.AddMember(ptr, ToString, false); LuaObject.AddMember(ptr, As, false); LuaObject.AddMember(ptr, IsNull, false); LuaObject.AddMember(ptr, MakeArray, false); LuaObject.AddMember(ptr, ToBytes, false); LuaObject.AddMember(ptr, "out", GetOut, null, false); LuaObject.AddMember(ptr, "version", GetVersion, null, false); LuaFunction function = LuaState.Get(ptr).DoString(ClassFunction) as LuaFunction; function.Push(ptr); LuaNativeMethods.lua_setfield(ptr, -3, "Class"); LuaObject.CreateTypeMetatable(ptr, null, typeof(Helper)); }