public override void ReadRest(ReaderContext ctxt, BlobReader reader) { ElementType = new TypeWithCustomMods(); ElementType.Read(ctxt, reader); }
public override void ReadRest(ReaderContext ctxt, BlobReader reader) { if (TypeArity > 0) TypeArity = (int)reader.ReadCompressedUInt32(); var paramCount = (int)reader.ReadCompressedUInt32(); ReturnType = new TypeWithCustomMods(); ReturnType.Read(ctxt, reader); var sentinelIndex = -1; if (paramCount > 0) { var parameters = new Seq<TypeWithCustomMods>(paramCount); for (var i = 0; i < paramCount; i++) { var param = new TypeWithCustomMods(); param.Read(ctxt, reader); if (param.Type.IsSentinel) { if (CallingConvention == CallingConvention.ManagedVarArg || CallingConvention == CallingConvention.NativeC) { if (sentinelIndex > 0) throw new PEException("multiple sentinels in VARARG/C signature"); sentinelIndex = i; i--; } else throw new PEException("unexpected sentinel in non-VARARG/C signature"); } else parameters.Add(param); } Parameters = parameters; } else Parameters = Constants.EmptyTypeWithCustomMods; VarArgs = sentinelIndex < 0 ? 0 : paramCount - sentinelIndex; }
public override void ReadRest(ReaderContext ctxt, BlobReader reader) { var paramCount = (int)reader.ReadCompressedUInt32(); ReturnType = new TypeWithCustomMods(); ReturnType.Read(ctxt, reader); if (paramCount > 0) { var parameters = new Seq<TypeSig>(paramCount); for (var i = 0; i < paramCount; i++) parameters.Add(TypeSig.Read(ctxt, reader)); Parameters = parameters; } else Parameters = Constants.EmptyTypeSigs; }