using System;
using System.Collections;
using NLua.Extensions;
using NLua.Native;
namespace NLua
{
public class LuaTable : LuaBase
{
public LuaTable(int reference, Lua interpreter): base(reference, interpreter)
{
}
///
/// Indexer for string fields of the table
///
public object this[string field]
{
get => !TryGet(out var lua) ? null : lua.GetObject(_Reference, field);
set
{
if (!TryGet(out var lua))
{
return;
}
lua.SetObject(_Reference, field, value);
}
}
///
/// Indexer for numeric fields of the table
///
public object this[object field]
{
get => !TryGet(out var lua) ? null : lua.GetObject(_Reference, field);
set
{
if (!TryGet(out var lua))
{
return;
}
lua.SetObject(_Reference, field, value);
}
}
public IDictionaryEnumerator GetEnumerator()
{
if (!TryGet(out var lua))
{
return null;
}
return lua.GetTableDict(this).GetEnumerator();
}
public ICollection Keys => !TryGet(out var lua) ? null : lua.GetTableDict(this).Keys;
public ICollection Values
{
get
{
if (!TryGet(out var lua))
{
return Array.Empty