MarshalBlobReader(ModuleDef module, ref DataReader reader, GenericParamContext gpContext)
 {
     this.module    = module;
     this.reader    = reader;
     this.gpContext = gpContext;
 }
 /// <summary>
 /// Reads a <see cref="MarshalType"/> from <paramref name="data"/>
 /// </summary>
 /// <param name="module">Owner module</param>
 /// <param name="data">Marshal data</param>
 /// <param name="gpContext">Generic parameter context</param>
 /// <returns>A new <see cref="MarshalType"/> instance</returns>
 public static MarshalType Read(ModuleDef module, byte[] data, GenericParamContext gpContext) => Read(module, ByteArrayDataReaderFactory.CreateReader(data), gpContext);
        /// <summary>
        /// Reads a <see cref="MarshalType"/> from <see cref="reader"/>
        /// </summary>
        /// <param name="module">Owner module</param>
        /// <param name="reader">A reader that will be owned by us</param>
        /// <param name="gpContext">Generic parameter context</param>
        /// <returns>A new <see cref="MarshalType"/> instance</returns>
        public static MarshalType Read(ModuleDef module, DataReader reader, GenericParamContext gpContext)
        {
            var marshalReader = new MarshalBlobReader(module, ref reader, gpContext);

            return(marshalReader.Read());
        }
 /// <summary>
 /// Reads a <see cref="MarshalType"/> from the <c>#Blob</c> heap
 /// </summary>
 /// <param name="module">Module</param>
 /// <param name="sig">Blob offset</param>
 /// <param name="gpContext">Generic parameter context</param>
 /// <returns>A new <see cref="MarshalType"/> instance</returns>
 public static MarshalType Read(ModuleDefMD module, uint sig, GenericParamContext gpContext) => Read(module, module.BlobStream.CreateReader(sig), gpContext);
 DeclSecurityReader(ModuleDef module, DataReader reader, GenericParamContext gpContext)
 {
     this.reader    = reader;
     this.module    = module;
     this.gpContext = gpContext;
 }
        /// <summary>
        /// Reads a <c>DeclSecurity</c> blob
        /// </summary>
        /// <param name="module">Module that will own the returned list</param>
        /// <param name="signature"><c>DeclSecurity</c> stream that will be owned by us</param>
        /// <param name="gpContext">Generic parameter context</param>
        /// <returns>A list of <see cref="SecurityAttribute"/>s</returns>
        public static IList <SecurityAttribute> Read(ModuleDef module, DataReader signature, GenericParamContext gpContext)
        {
            var reader = new DeclSecurityReader(module, signature, gpContext);

            return(reader.Read());
        }
 /// <summary>
 /// Reads a <c>DeclSecurity</c> blob
 /// </summary>
 /// <param name="module">Module that will own the returned list</param>
 /// <param name="blob"><c>DeclSecurity</c> blob</param>
 /// <param name="gpContext">Generic parameter context</param>///
 /// <returns>A list of <see cref="SecurityAttribute"/>s</returns>
 public static IList <SecurityAttribute> Read(ModuleDef module, byte[] blob, GenericParamContext gpContext) => Read(module, ByteArrayDataReaderFactory.CreateReader(blob), gpContext);
 /// <summary>
 /// Reads a <c>DeclSecurity</c> blob
 /// </summary>
 /// <param name="module">Module that will own the returned list</param>
 /// <param name="sig"><c>#Blob</c> offset of <c>DeclSecurity</c> signature</param>
 /// <param name="gpContext">Generic parameter context</param>
 /// <returns>A list of <see cref="SecurityAttribute"/>s</returns>
 public static IList <SecurityAttribute> Read(ModuleDefMD module, uint sig, GenericParamContext gpContext) => Read(module, module.BlobStream.CreateReader(sig), gpContext);