OpenSim.Region.ScriptEngine.../src/LUA/LuaUserData.cs

74 lines
1.6 KiB
C#

using System;
namespace NLua
{
public class LuaUserData : LuaBase
{
public LuaUserData(int reference, Lua interpreter):base(reference, interpreter)
{
}
/*
* Indexer for string fields of the userdata
*/
public object this[string field] {
get
{
Lua lua;
if (!TryGet(out lua))
return null;
return lua.GetObject(_Reference, field);
}
set
{
Lua lua;
if (!TryGet(out lua))
return;
lua.SetObject(_Reference, field, value);
}
}
/*
* Indexer for numeric fields of the userdata
*/
public object this[object field] {
get
{
Lua lua;
if (!TryGet(out lua))
return null;
return lua.GetObject(_Reference, field);
}
set
{
Lua lua;
if (!TryGet(out lua))
return;
lua.SetObject(_Reference, field, value);
}
}
/*
* Calls the userdata and returns its return values inside
* an array
*/
public object[] Call(params object[] args)
{
Lua lua;
if (!TryGet(out lua))
return null;
return lua.CallFunction(this, args);
}
public override string ToString()
{
return "userdata";
}
}
}