public void Encode(Stream output, LuaArgs values) { using (var gzip = new GZipStream(output, CompressionMode.Compress, true)) { var writer = new BinaryWriter(gzip, Encoding.UTF8); Encode(writer, values); } }
public byte[] Encode(LuaArgs values) { using (var memory = new MemoryStream()) { Encode(memory, values); return(memory.ToArray()); } }
public static LuaArgs Concat(LuaArgs a, LuaArgs b) { if (b.Length == 0) { return(a); } else if (b.Length == 0) { return(b); } var totalLength = a.Length + b.Length; if (totalLength == 0) { return(LuaArgs.Empty); } else if (totalLength == 1) { var arg0 = (a.Length > 0) ? a[0] : b[0]; return(new LuaArgs(arg0)); } else if (totalLength == 2) { var arg0 = (a.Length > 0) ? a[0] : b[0]; var arg1 = (a.Length > 1) ? a[1] : b[1 - a.Length]; return(new LuaArgs(arg0, arg1)); } else if (totalLength == 3) { var arg0 = (a.Length > 0) ? a[0] : b[0]; var arg1 = (a.Length > 1) ? a[1] : b[1 - a.Length]; var arg2 = (a.Length > 2) ? a[2] : b[2 - a.Length]; return(new LuaArgs(arg0, arg1, arg2)); } else if (totalLength == 4) { var arg0 = (a.Length > 0) ? a[0] : b[0]; var arg1 = (a.Length > 1) ? a[1] : b[1 - a.Length]; var arg2 = (a.Length > 2) ? a[2] : b[2 - a.Length]; var arg3 = (a.Length > 3) ? a[3] : b[3 - a.Length]; return(new LuaArgs(arg0, arg1, arg2, arg3)); } else { var arg0 = (a.Length > 0) ? a[0] : b[0]; var arg1 = (a.Length > 1) ? a[1] : b[1 - a.Length]; var arg2 = (a.Length > 2) ? a[2] : b[2 - a.Length]; var arg3 = (a.Length > 3) ? a[3] : b[3 - a.Length]; var extraArgs = new LuaValue[totalLength - 4]; for (int i = 0; i < extraArgs.Length; ++i) { var n = i + 4; extraArgs[i] = (a.Length > n) ? a[n] : b[n - a.Length]; } return(new LuaArgs(arg0, arg1, arg2, arg3, extraArgs)); } }
private void Encode(BinaryWriter output, LuaArgs values) { if (values.Length > byte.MaxValue) { throw new InvalidDataException("Maximum 255 values may be encoded in a list"); } output.Write((byte)values.Length); for (int i = 0; i < values.Length; ++i) { EncodeImpl(output, values[i]); } }
public LuaArgs getType(LuaArgs args) { return(new LuaArgs(TypeName)); }
public LuaAsyncCall(LuaFunction function, LuaArgs arguments, LuaContinuation continuation) : base("Unhandled lua async call") { Function = function; Arguments = arguments; Continuation = continuation; }
public LuaYield(LuaArgs results, LuaContinuation continuation) : base("Unhandled lua yield") { Results = results; Continuation = continuation; }