Exemplo n.º 1
0
        protected override void ParseUpvalues(Stream stream, BHeader header, LFunctionParseState s)
        {
            var upvalues = header.UpValue.ParseList(stream, header);

            s.LenUpvalues = upvalues.Length.AsInteger();
            s.Upvalues    = upvalues.AsArray();
        }
Exemplo n.º 2
0
        protected virtual void ParseDebug(Stream stream, BHeader header, LFunctionParseState s)
        {
            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse source lines list");
            }

            s.Lines = header.Integer.ParseList(stream, header);

            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse locals list");
            }

            s.Locals = header.Local.ParseList(stream, header);

            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse upvalues list");
            }

            var upvalNames = header.String.ParseList(stream, header);
            var count      = upvalNames.Length.AsInteger();

            for (int i = 0; i < count; i++)
            {
                s.Upvalues[i].Name = upvalNames[i].DeRef();
            }
        }
Exemplo n.º 3
0
        public override void ParseUpvalues(BinaryReaderEx reader, BHeader header, LFunctionParseState s)
        {
            BList <LUpvalue> upvalues = header.Upvalue.ParseList(reader, header);

            s.LenUpvalues = upvalues.Length.AsInt();
            s.Upvalues    = upvalues.AsArray(new LUpvalue[s.LenUpvalues]);
        }
Exemplo n.º 4
0
        protected virtual void ParseUpvalues(Stream stream, BHeader header, LFunctionParseState s)
        {
            s.Upvalues = new LUpvalue[s.LenUpvalues];

            for (int i = 0; i < s.LenUpvalues; i++)
            {
                s.Upvalues[i] = new LUpvalue();
            }
        }
Exemplo n.º 5
0
 protected override void ParseMain(Stream stream, BHeader header, LFunctionParseState s)
 {
     s.LineBegin        = header.Integer.Parse(stream, header).AsInteger();
     s.LineEnd          = header.Integer.Parse(stream, header).AsInteger();
     s.LenParameter     = stream.ReadByte();
     s.VarArg           = stream.ReadByte();
     s.MaximumStackSize = stream.ReadByte();
     this.ParseCode(stream, header, s);
     this.ParseConstants(stream, header, s);
     this.ParseUpvalues(stream, header, s);
     this.ParseDebug(stream, header, s);
 }
Exemplo n.º 6
0
        public override void ParseMain(BinaryReaderEx reader, BHeader header, LFunctionParseState s)
        {
            s.LineBegin        = header.Integer.Parse(reader, header).AsInt();
            s.LineEnd          = header.Integer.Parse(reader, header).AsInt();
            s.LenParameter     = reader.ReadByte();
            s.Vararg           = reader.ReadByte();
            s.MaximumStackSize = reader.ReadByte();

            ParseCode(reader, header, s);
            ParseConstants(reader, header, s);
            ParseUpvalues(reader, header, s);
            ParseDebug(reader, header, s);
        }
Exemplo n.º 7
0
        public override LFunction parse(ByteBuffer buffer, BHeader header)
        {
            if (header.debug)
            {
                Console.WriteLine("-- beginning to parse function");
            }
            if (header.debug)
            {
                Console.WriteLine("-- parsing name...start...end...upvalues...params...varargs...stack");
            }
            LFunctionParseState s = new LFunctionParseState();

            parse_main(buffer, header, s);
            return(new LFunction(header, s.code, s.locals.asArray(new LLocal[s.locals.length.asInt()]), s.constants.asArray(new LObject[s.constants.length.asInt()]), s.upvalues, s.functions.asArray(new LFunction[s.functions.length.asInt()]), s.maximumStackSize, s.lenUpvalues, s.lenParameter, s.vararg));
        }
Exemplo n.º 8
0
        protected virtual void ParseConstants(Stream stream, BHeader header, LFunctionParseState s)
        {
            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse constants list");
            }

            s.Constants = header.Constant.ParseList(stream, header);

            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse functions list");
            }

            s.Functions = header.Function.ParseList(stream, header);
        }
Exemplo n.º 9
0
        protected virtual void ParseMain(Stream stream, BHeader header, LFunctionParseState s)
        {
            s.Name = header.String.Parse(stream, header);

            s.LineBegin = header.Integer.Parse(stream, header).AsInteger();
            s.LineEnd   = header.Integer.Parse(stream, header).AsInteger();

            s.LenUpvalues      = 0xFF & stream.ReadByte();
            s.LenParameter     = 0xFF & stream.ReadByte();
            s.VarArg           = 0xFF & stream.ReadByte();
            s.MaximumStackSize = 0xFF & stream.ReadByte();

            ParseCode(stream, header, s);
            ParseConstants(stream, header, s);
            ParseUpvalues(stream, header, s);
            ParseDebug(stream, header, s);
        }
Exemplo n.º 10
0
        protected virtual void ParseCode(Stream stream, BHeader header, LFunctionParseState s)
        {
            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse bytecode list");
            }

            s.Length = header.Integer.Parse(stream, header).AsInteger();
            s.Code   = new int[s.Length];

            for (int i = 0; i < s.Length; i++)
            {
                s.Code[i] = stream.ReadInt32();

                if (header.Debug)
                {
                    Console.WriteLine("-- parsed codepoint 0x{0:X}" + s.Code[i]);
                }
            }
        }
Exemplo n.º 11
0
        public override void ParseMain(BinaryReaderEx reader, BHeader header, LFunctionParseState s)
        {
            s.Name      = header.String.Parse(reader, header);
            s.LineBegin = header.Integer.Parse(reader, header).AsInt();
            s.LineEnd   = 0;

            int lenUpvalues = reader.ReadByte();

            s.Upvalues = new LUpvalue[lenUpvalues];

            for (int i = 0; i < lenUpvalues; i++)
            {
                s.Upvalues[i] = new LUpvalue();
            }

            s.LenParameter     = reader.ReadByte();
            s.Vararg           = reader.ReadByte();
            s.MaximumStackSize = reader.ReadByte();

            ParseDebug(reader, header, s);
            ParseConstants(reader, header, s);
            ParseCode(reader, header, s);
        }
Exemplo n.º 12
0
        public override LFunction Parse(Stream stream, BHeader header)
        {
            if (header.Debug)
            {
                Console.WriteLine("-- beginning to parse function");
                Console.WriteLine("-- parsing name...start...end...upvalues...params...varargs...stack");
            }

            var s = new LFunctionParseState();

            ParseMain(stream, header, s);

            return(new LFunction(header,
                                 s.Code,
                                 s.Locals.AsArray(),
                                 s.Constants.AsArray(),
                                 s.Upvalues,
                                 s.Functions.AsArray(),
                                 s.MaximumStackSize,
                                 s.LenUpvalues,
                                 s.LenParameter,
                                 s.VarArg));
        }
Exemplo n.º 13
0
        protected internal override void parse_upvalues(ByteBuffer buffer, BHeader header, LFunctionParseState s)
        {
            BList <LUpvalue> upvalues = header.upvalue.parseList(buffer, header);

            s.lenUpvalues = upvalues.length.asInt();
            s.upvalues    = upvalues.asArray(new LUpvalue[s.lenUpvalues]);
        }
Exemplo n.º 14
0
        protected override void ParseDebug(Stream stream, BHeader header, LFunctionParseState s)
        {
            s.Name = header.String.Parse(stream, header);

            base.ParseDebug(stream, header, s);
        }
Exemplo n.º 15
0
 protected internal virtual void parse_main(ByteBuffer buffer, BHeader header, LFunctionParseState s)
 {
     s.name             = [email protected](buffer, header);
     s.lineBegin        = header.integer.parse(buffer, header).asInt();
     s.lineEnd          = header.integer.parse(buffer, header).asInt();
     s.lenUpvalues      = 0xFF & buffer.GetByte();
     s.lenParameter     = 0xFF & buffer.GetByte();
     s.vararg           = 0xFF & buffer.GetByte();
     s.maximumStackSize = 0xFF & buffer.GetByte();
     parse_code(buffer, header, s);
     parse_constants(buffer, header, s);
     parse_upvalues(buffer, header, s);
     parse_debug(buffer, header, s);
 }
Exemplo n.º 16
0
 protected internal virtual void parse_code(ByteBuffer buffer, BHeader header, LFunctionParseState s)
 {
     if (header.debug)
     {
         Console.WriteLine("-- beginning to parse bytecode list");
     }
     s.length = header.integer.parse(buffer, header).asInt();
     s.code   = new int[s.length];
     for (int i = 0; i < s.length; i++)
     {
         /*byte[] intByteArray = new byte[4];
          * intByteArray[0] = Convert.ToByte(buffer.ReadByte());
          * intByteArray[1] = Convert.ToByte(buffer.ReadByte());
          * intByteArray[2] = Convert.ToByte(buffer.ReadByte());
          * intByteArray[3] = Convert.ToByte(buffer.ReadByte());*/
         s.code[i] = buffer.GetInt(); //BitConverter.ToInt32(intByteArray, 0);//buffer.getInt();
         if (header.debug)
         {
             Console.WriteLine("-- parsed codepoint " + s.code[i].ToString("X8"));
         }
     }
 }
Exemplo n.º 17
0
 protected internal virtual void parse_constants(ByteBuffer buffer, BHeader header, LFunctionParseState s)
 {
     if (header.debug)
     {
         Console.WriteLine("-- beginning to parse constants list");
     }
     s.constants = header.constant.parseList(buffer, header);
     if (header.debug)
     {
         Console.WriteLine("-- beginning to parse functions list");
     }
     s.functions = header.function.parseList(buffer, header);
 }
Exemplo n.º 18
0
        protected internal virtual void parse_debug(ByteBuffer buffer, BHeader header, LFunctionParseState s)
        {
            if (header.debug)
            {
                Console.WriteLine("-- beginning to parse source lines list");
            }
            s.lines = header.integer.parseList(buffer, header);
            if (header.debug)
            {
                Console.WriteLine("-- beginning to parse locals list");
            }
            s.locals = header.local.parseList(buffer, header);
            if (header.debug)
            {
                Console.WriteLine("-- beginning to parse upvalues list");
            }
            BList <LString> upvalueNames = [email protected](buffer, header);

            for (int i = 0; i < upvalueNames.length.asInt(); i++)
            {
                s.upvalues[i].name = upvalueNames.get(i).deref();
            }
        }
Exemplo n.º 19
0
 protected internal override void parse_debug(ByteBuffer buffer, BHeader header, LFunctionParseState s)
 {
     s.name = [email protected](buffer, header);
     base.parse_debug(buffer, header, s);
 }
Exemplo n.º 20
0
        public override void ParseDebug(BinaryReaderEx reader, BHeader header, LFunctionParseState s)
        {
            s.Name = header.String.Parse(reader, header);

            ParseDebug(reader, header, s);
        }
Exemplo n.º 21
0
 protected internal virtual void parse_upvalues(ByteBuffer buffer, BHeader header, LFunctionParseState s)
 {
     s.upvalues = new LUpvalue[s.lenUpvalues];
     for (int i = 0; i < s.lenUpvalues; i++)
     {
         s.upvalues[i] = new LUpvalue();
     }
 }