namespace Lua.Standard.Basic; public sealed class RawLenFunction : LuaFunction { public override string Name => "rawlen"; public static readonly RawLenFunction Instance = new(); protected override ValueTask InvokeAsyncCore(LuaFunctionExecutionContext context, Memory buffer, CancellationToken cancellationToken) { var arg0 = context.GetArgument(0); if (arg0.TryRead(out var table)) { buffer.Span[0] = table.ArrayLength; } else if (arg0.TryRead(out var str)) { buffer.Span[0] = str.Length; } else { LuaRuntimeException.BadArgument(context.State.GetTraceback(), 2, Name, [LuaValueType.String, LuaValueType.Table]); } return new(1); } }