示例#1
0
        internal static PexObjectFunction Create(PexParseMeta parse)
        {
            var ret = new PexObjectFunction();

            ret.ReturnTypeName = parse.ReadString();
            ret.DocString      = parse.ReadString();
            ret.RawUserFlags   = parse.Reader.ReadUInt32();
            ret.Flags          = (FunctionFlags)parse.Reader.ReadUInt8();

            var parameters = parse.Reader.ReadUInt16();

            for (var i = 0; i < parameters; i++)
            {
                var parameter = PexObjectFunctionVariable.Create(parse);
                ret.Parameters.Add(parameter);
            }

            var locals = parse.Reader.ReadUInt16();

            for (var i = 0; i < locals; i++)
            {
                var local = PexObjectFunctionVariable.Create(parse);
                ret.Locals.Add(local);
            }

            var instructions = parse.Reader.ReadUInt16();

            for (var i = 0; i < instructions; i++)
            {
                var instruction = PexObjectFunctionInstruction.Create(parse);
                ret.Instructions.Add(instruction);
            }
            return(ret);
        }
示例#2
0
        internal static PexObjectProperty Create(PexParseMeta parse)
        {
            var ret = new PexObjectProperty();

            ret.Name         = parse.ReadString();
            ret.TypeName     = parse.ReadString();
            ret.DocString    = parse.ReadString();
            ret.RawUserFlags = parse.Reader.ReadUInt32();

            var flags = parse.Reader.ReadUInt8();

            ret.Flags = (PropertyFlags)flags;

            if ((flags & 4) != 0)
            {
                ret.AutoVarName = parse.ReadString();
            }

            if ((flags & 5) == 1)
            {
                ret.ReadHandler = PexObjectFunction.Create(parse);
            }

            if ((flags & 6) == 2)
            {
                ret.WriteHandler = PexObjectFunction.Create(parse);
            }
            return(ret);
        }
示例#3
0
        internal static PexObjectNamedFunction Create(PexParseMeta parse)
        {
            var ret = new PexObjectNamedFunction();

            ret.FunctionName = parse.ReadString();
            ret.Function     = PexObjectFunction.Create(parse);
            return(ret);
        }