コード例 #1
0
 public override void Parse(CLRMetaDataParser parser)
 {
     Parent = parser.ReadHasCustomAttribute();
     Constructor = parser.ReadCustomAttributeType();
     m_rawValue = parser.ReadBlob();
     m_tables = parser.Tables;
 }
コード例 #2
0
ファイル: CLRConstantRow.cs プロジェクト: elasota/clarity
        public override void Parse(CLRMetaDataParser parser)
        {
            Type = (CLRSigType.ElementType)parser.ReadU8();
            if (parser.ReadU8() != 0)
                throw new ParseFailedException("Pad missing");

            Parent = parser.ReadHasConstant();
            Value = parser.ReadBlob();

            ICLRHasConstant hcParent = (ICLRHasConstant)Parent;
            CLRConstantRow[] newConstants;
            if (hcParent.AttachedConstants != null)
            {
                CLRConstantRow[] oldConstants = hcParent.AttachedConstants;
                newConstants = new CLRConstantRow[oldConstants.Length + 1];
                for (int i = 0; i < oldConstants.Length; i++)
                    newConstants[i] = oldConstants[i];
            }
            else
                newConstants = new CLRConstantRow[1];
            newConstants[newConstants.Length - 1] = this;
            hcParent.AttachedConstants = newConstants;
        }
コード例 #3
0
 public override void Parse(CLRMetaDataParser parser)
 {
     Signature = parser.ReadBlob();
 }
コード例 #4
0
ファイル: CLRAssemblyRefRow.cs プロジェクト: elasota/clarity
        public override void Parse(CLRMetaDataParser parser)
        {
            MajorVersion = parser.ReadU16();
            MinorVersion = parser.ReadU16();
            BuildNumber = parser.ReadU16();
            RevisionNumber = parser.ReadU16();
            uint flags = parser.ReadU32();
            PublicKeyOrToken = parser.ReadBlob();
            Name = parser.ReadString();
            Culture = parser.ReadString();
            HashValue = parser.ReadBlob();

            HasPublicKey = ((flags & 0x1) != 0);
            Retargetable = ((flags & 0x100) != 0);
            DisableJITcompileOptimizer = ((flags & 0x4000) != 0);
            EnableJITcompileTracking = ((flags & 0x8000) != 0);
        }
コード例 #5
0
ファイル: CLRAssemblyRow.cs プロジェクト: elasota/clarity
        public override void Parse(CLRMetaDataParser parser)
        {
            HashAlgId = (AssemblyHashAlgorithm)parser.ReadU32();
            if (HashAlgId != AssemblyHashAlgorithm.None && HashAlgId != AssemblyHashAlgorithm.ReservedMD5 && HashAlgId != AssemblyHashAlgorithm.SHA1)
                throw new ParseFailedException("Unknown hash algorith");
            MajorVersion = parser.ReadU16();
            MinorVersion = parser.ReadU16();
            BuildNumber = parser.ReadU16();
            RevisionNumber = parser.ReadU16();

            uint flags = parser.ReadU32();

            PublicKey = parser.ReadBlob();
            Name = parser.ReadString();
            Culture = parser.ReadString();

            HasPublicKey = ((flags & 0x1) != 0);
            Retargetable = ((flags & 0x100) != 0);
            DisableJITcompileOptimizer = ((flags & 0x4000) != 0);
            EnableJITcompileTracking = ((flags & 0x8000) != 0);
        }
コード例 #6
0
ファイル: CLRMethodSpecRow.cs プロジェクト: elasota/clarity
 public override void Parse(CLRMetaDataParser parser)
 {
     Method = parser.ReadMethodDefOrRef();
     Instantiation = new CLRSigMethodSpec(new CLRSignatureParser(parser.ReadBlob(), parser.Tables));
 }