74 lines
1.6 KiB
C#
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";
|
|
}
|
|
}
|
|
} |