lua.RegisterFunction(method.Name,null,method);// CLR name
else
lua.RegisterFunction(attribute.Name,null,method);// Custom name
lua.RegisterFunction(attribute.Name,null,method);// Custom name
}
}
}
...
...
@@ -100,26 +95,25 @@ namespace LuaInterface
/// <typeparam name="T">The enum type to register</typeparam>
/// <param name="lua">The Lua VM to add the enum to</param>
[SuppressMessage("Microsoft.Design","CA1004:GenericMethodsShouldProvideTypeParameter",Justification="The type parameter is used to select an enum type")]
publicstaticvoidEnumeration<T>(Lualua)
publicstaticvoidEnumeration<T>(Lualua)
{
#regionSanitychecks
if(lua.IsNull())
thrownewArgumentNullException("lua");
if(lua.IsNull())
thrownewArgumentNullException("lua");
#endregion
vartype=typeof(T);
if(!type.IsEnum)
thrownewArgumentException("The type must be an enumeration!");
if(!type.IsEnum)
thrownewArgumentException("The type must be an enumeration!");
Debug.WriteLine(string.Format("An error occurred during an attempt to retrieve an extractor ({0}) while checking for params array status.",paramElementType.FullName));
Debug.WriteLine(string.Format("An error occurred during an attempt to retrieve an extractor ({0}) while checking for params array status.",paramElementType.FullName));
// Note: starting with lua5.1 the garbage collector may remove weak reference items (such as our luaNet_objects values) when the initial GC sweep
// occurs, but the actual call of the __gc finalizer for that object may not happen until a little while later. During that window we might call
// this routine and find the element missing from luaNet_objects, but collectObject() has not yet been called. In that case, we go ahead and call collect
// object here
// did we find a non nil object in our table? if not, we need to call collect object
vartype=LuaLib.lua_type(luaState,-1);
if(type!=LuaTypes.Nil)
{
LuaLib.lua_remove(luaState,-2);// drop the metatable - we're going to leave our object on the stack
vartype=LuaLib.lua_type(luaState,-1);
if(type!=LuaTypes.Nil){
LuaLib.lua_remove(luaState,-2);// drop the metatable - we're going to leave our object on the stack
return;
}
// MetaFunctions.dumpStack(this, luaState);
LuaLib.lua_remove(luaState,-1);// remove the nil object value
LuaLib.lua_remove(luaState,-1);// remove the metatable
collectObject(o,index);// Remove from both our tables and fall out to get a new ID
LuaLib.lua_remove(luaState,-1);// remove the nil object value
LuaLib.lua_remove(luaState,-1);// remove the metatable
collectObject(o,index);// Remove from both our tables and fall out to get a new ID
}
index=addObject(o);
pushNewObject(luaState,o,index,metatable);
index=addObject(o);
pushNewObject(luaState,o,index,metatable);
}
/*
* Pushes a new object into the Lua stack with the provided