RawSetFunction.cs 821 B

12345678910111213141516171819202122232425
  1. namespace Lua.Standard.Base;
  2. public sealed class RawSetFunction : LuaFunction
  3. {
  4. public const string Name = "rawset";
  5. public static readonly RawSetFunction Instance = new();
  6. protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
  7. {
  8. ThrowIfArgumentNotExists(context, Name, 0);
  9. ThrowIfArgumentNotExists(context, Name, 1);
  10. ThrowIfArgumentNotExists(context, Name, 2);
  11. var arg0 = context.Arguments[0];
  12. if (!arg0.TryRead<LuaTable>(out var table))
  13. {
  14. LuaRuntimeException.BadArgument(context.State.GetTracebacks(), 1, Name, LuaValueType.Table, arg0.Type);
  15. }
  16. table[context.Arguments[1]] = context.Arguments[2];
  17. return new(0);
  18. }
  19. }