Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 public byte[] Encode(LuaArgs values)
 {
     using (var memory = new MemoryStream())
     {
         Encode(memory, values);
         return(memory.ToArray());
     }
 }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
 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]);
     }
 }
Exemplo n.º 5
0
 public LuaArgs getType(LuaArgs args)
 {
     return(new LuaArgs(TypeName));
 }
Exemplo n.º 6
0
 public LuaAsyncCall(LuaFunction function, LuaArgs arguments, LuaContinuation continuation) : base("Unhandled lua async call")
 {
     Function     = function;
     Arguments    = arguments;
     Continuation = continuation;
 }
Exemplo n.º 7
0
 public LuaYield(LuaArgs results, LuaContinuation continuation) : base("Unhandled lua yield")
 {
     Results      = results;
     Continuation = continuation;
 }