Beispiel #1
0
        void ReadMethods(RhydonContext ctx, int count)
        {
            for (var i = 0; i < count; i++)
            {
                var id     = ctx.ReadCompressedUint();
                var export = MethodExport.Create(ctx);

                ctx.Logger.Debug($"Methods[{id:D3}]: Offset: 0x{export.Offset:X8} Key: 0x{export.Key:X8}");
                Methods[id] = export;
            }
        }
Beispiel #2
0
        public static MethodExport Create(RhydonContext ctx)
        {
            var obj = new MethodExport {
                Offset = ctx.Reader.ReadUInt32()
            };

            if (obj.Offset != 0)
            {
                obj.Key = ctx.Reader.ReadUInt32();
            }

            obj.Flags = ctx.Reader.ReadByte();

            obj.ArgumentTypes = new ITypeDefOrRef[ctx.Reader.ReadCompressedUint()];
            for (var i = 0; i < obj.ArgumentTypes.Length; i++)
            {
                obj.ArgumentTypes[i] = (ITypeDefOrRef)ctx.Module.ResolveToken(KoiHeader.FromCodedToken(ctx.Reader.ReadCompressedUint()));
            }

            obj.ReturnType = (ITypeDefOrRef)ctx.Module.ResolveToken(KoiHeader.FromCodedToken(ctx.Reader.ReadCompressedUint()));
            return(obj);
        }