Example #1
0
		public bool TryGetOverrideMapping (MethodDefinition method, out MetadataToken [] mapping)
		{
			return Overrides.TryGetValue (method.token.RID, out mapping);
		}
Example #2
0
		public void SetOverrideMapping (uint rid, MetadataToken [] mapping)
		{
			Overrides [rid] = mapping;
		}
Example #3
0
		public bool TryGetGenericConstraintMapping (GenericParameter generic_parameter, out MetadataToken [] mapping)
		{
			return GenericConstraints.TryGetValue (generic_parameter.token.RID, out mapping);
		}
Example #4
0
		public void SetGenericConstraintMapping (uint gp_rid, MetadataToken [] mapping)
		{
			GenericConstraints [gp_rid] = mapping;
		}
Example #5
0
		public void SetInterfaceMapping (uint type_rid, MetadataToken [] mapping)
		{
			Interfaces [type_rid] = mapping;
		}
Example #6
0
		public bool TryGetInterfaceMapping (TypeDefinition type, out MetadataToken [] mapping)
		{
			return Interfaces.TryGetValue (type.token.RID, out mapping);
		}
		public AssemblyNameReference (string name, Version version)
		{
			if (name == null)
				throw new ArgumentNullException ("name");

			this.name = name;
			this.version = version;
			this.hash_algorithm = AssemblyHashAlgorithm.None;
			this.token = new MetadataToken (TokenType.AssemblyRef);
		}
Example #8
0
        public static uint CompressMetadataToken (this CodedIndex self, MetadataToken token)
		{
			uint ret = 0;
			if (token.RID == 0)
				return ret;
			switch (self) {
			case CodedIndex.TypeDefOrRef:
				ret = token.RID << 2;
				switch (token.TokenType) {
				case TokenType.TypeDef:
					return ret | 0;
				case TokenType.TypeRef:
					return ret | 1;
				case TokenType.TypeSpec:
					return ret | 2;
				default:
					goto exit;
				}
			case CodedIndex.HasConstant:
				ret = token.RID << 2;
				switch (token.TokenType) {
				case TokenType.Field:
					return ret | 0;
				case TokenType.Param:
					return ret | 1;
				case TokenType.Property:
					return ret | 2;
				default:
					goto exit;
				}
			case CodedIndex.HasCustomAttribute:
				ret = token.RID << 5;
				switch (token.TokenType) {
				case TokenType.Method:
					return ret | 0;
				case TokenType.Field:
					return ret | 1;
				case TokenType.TypeRef:
					return ret | 2;
				case TokenType.TypeDef:
					return ret | 3;
				case TokenType.Param:
					return ret | 4;
				case TokenType.InterfaceImpl:
					return ret | 5;
				case TokenType.MemberRef:
					return ret | 6;
				case TokenType.Module:
					return ret | 7;
				case TokenType.Permission:
					return ret | 8;
				case TokenType.Property:
					return ret | 9;
				case TokenType.Event:
					return ret | 10;
				case TokenType.Signature:
					return ret | 11;
				case TokenType.ModuleRef:
					return ret | 12;
				case TokenType.TypeSpec:
					return ret | 13;
				case TokenType.Assembly:
					return ret | 14;
				case TokenType.AssemblyRef:
					return ret | 15;
				case TokenType.File:
					return ret | 16;
				case TokenType.ExportedType:
					return ret | 17;
				case TokenType.ManifestResource:
					return ret | 18;
				case TokenType.GenericParam:
					return ret | 19;
				default:
					goto exit;
				}
			case CodedIndex.HasFieldMarshal:
				ret = token.RID << 1;
				switch (token.TokenType) {
				case TokenType.Field:
					return ret | 0;
				case TokenType.Param:
					return ret | 1;
				default:
					goto exit;
				}
			case CodedIndex.HasDeclSecurity:
				ret = token.RID << 2;
				switch (token.TokenType) {
				case TokenType.TypeDef:
					return ret | 0;
				case TokenType.Method:
					return ret | 1;
				case TokenType.Assembly:
					return ret | 2;
				default:
					goto exit;
				}
			case CodedIndex.MemberRefParent:
				ret = token.RID << 3;
				switch (token.TokenType) {
				case TokenType.TypeDef:
					return ret | 0;
				case TokenType.TypeRef:
					return ret | 1;
				case TokenType.ModuleRef:
					return ret | 2;
				case TokenType.Method:
					return ret | 3;
				case TokenType.TypeSpec:
					return ret | 4;
				default:
					goto exit;
				}
			case CodedIndex.HasSemantics:
				ret = token.RID << 1;
				switch (token.TokenType) {
				case TokenType.Event:
					return ret | 0;
				case TokenType.Property:
					return ret | 1;
				default:
					goto exit;
				}
			case CodedIndex.MethodDefOrRef:
				ret = token.RID << 1;
				switch (token.TokenType) {
				case TokenType.Method:
					return ret | 0;
				case TokenType.MemberRef:
					return ret | 1;
				default:
					goto exit;
				}
			case CodedIndex.MemberForwarded:
				ret = token.RID << 1;
				switch (token.TokenType) {
				case TokenType.Field:
					return ret | 0;
				case TokenType.Method:
					return ret | 1;
				default:
					goto exit;
				}
			case CodedIndex.Implementation:
				ret = token.RID << 2;
				switch (token.TokenType) {
				case TokenType.File:
					return ret | 0;
				case TokenType.AssemblyRef:
					return ret | 1;
				case TokenType.ExportedType:
					return ret | 2;
				default:
					goto exit;
				}
			case CodedIndex.CustomAttributeType:
				ret = token.RID << 3;
				switch (token.TokenType) {
				case TokenType.Method:
					return ret | 2;
				case TokenType.MemberRef:
					return ret | 3;
				default:
					goto exit;
				}
			case CodedIndex.ResolutionScope:
				ret = token.RID << 2;
				switch (token.TokenType) {
				case TokenType.Module:
					return ret | 0;
				case TokenType.ModuleRef:
					return ret | 1;
				case TokenType.AssemblyRef:
					return ret | 2;
				case TokenType.TypeRef:
					return ret | 3;
				default:
					goto exit;
				}
			case CodedIndex.TypeOrMethodDef:
				ret = token.RID << 1;
				switch (token.TokenType) {
				case TokenType.TypeDef:
					return ret | 0;
				case TokenType.Method:
					return ret | 1;
				default:
					goto exit;
				}
			default:
				goto exit;
			}
		exit:
			throw new ArgumentException ();
		}
Example #9
0
        public static uint CompressMetadataToken(this CodedIndex self, MetadataToken token)
        {
            uint ret = 0;

            if (token.RID == 0)
            {
                return(ret);
            }
            switch (self)
            {
            case CodedIndex.TypeDefOrRef:
                ret = token.RID << 2;
                switch (token.TokenType)
                {
                case TokenType.TypeDef:
                    return(ret | 0);

                case TokenType.TypeRef:
                    return(ret | 1);

                case TokenType.TypeSpec:
                    return(ret | 2);

                default:
                    goto exit;
                }

            case CodedIndex.HasConstant:
                ret = token.RID << 2;
                switch (token.TokenType)
                {
                case TokenType.Field:
                    return(ret | 0);

                case TokenType.Param:
                    return(ret | 1);

                case TokenType.Property:
                    return(ret | 2);

                default:
                    goto exit;
                }

            case CodedIndex.HasCustomAttribute:
                ret = token.RID << 5;
                switch (token.TokenType)
                {
                case TokenType.Method:
                    return(ret | 0);

                case TokenType.Field:
                    return(ret | 1);

                case TokenType.TypeRef:
                    return(ret | 2);

                case TokenType.TypeDef:
                    return(ret | 3);

                case TokenType.Param:
                    return(ret | 4);

                case TokenType.InterfaceImpl:
                    return(ret | 5);

                case TokenType.MemberRef:
                    return(ret | 6);

                case TokenType.Module:
                    return(ret | 7);

                case TokenType.Permission:
                    return(ret | 8);

                case TokenType.Property:
                    return(ret | 9);

                case TokenType.Event:
                    return(ret | 10);

                case TokenType.Signature:
                    return(ret | 11);

                case TokenType.ModuleRef:
                    return(ret | 12);

                case TokenType.TypeSpec:
                    return(ret | 13);

                case TokenType.Assembly:
                    return(ret | 14);

                case TokenType.AssemblyRef:
                    return(ret | 15);

                case TokenType.File:
                    return(ret | 16);

                case TokenType.ExportedType:
                    return(ret | 17);

                case TokenType.ManifestResource:
                    return(ret | 18);

                case TokenType.GenericParam:
                    return(ret | 19);

                default:
                    goto exit;
                }

            case CodedIndex.HasFieldMarshal:
                ret = token.RID << 1;
                switch (token.TokenType)
                {
                case TokenType.Field:
                    return(ret | 0);

                case TokenType.Param:
                    return(ret | 1);

                default:
                    goto exit;
                }

            case CodedIndex.HasDeclSecurity:
                ret = token.RID << 2;
                switch (token.TokenType)
                {
                case TokenType.TypeDef:
                    return(ret | 0);

                case TokenType.Method:
                    return(ret | 1);

                case TokenType.Assembly:
                    return(ret | 2);

                default:
                    goto exit;
                }

            case CodedIndex.MemberRefParent:
                ret = token.RID << 3;
                switch (token.TokenType)
                {
                case TokenType.TypeDef:
                    return(ret | 0);

                case TokenType.TypeRef:
                    return(ret | 1);

                case TokenType.ModuleRef:
                    return(ret | 2);

                case TokenType.Method:
                    return(ret | 3);

                case TokenType.TypeSpec:
                    return(ret | 4);

                default:
                    goto exit;
                }

            case CodedIndex.HasSemantics:
                ret = token.RID << 1;
                switch (token.TokenType)
                {
                case TokenType.Event:
                    return(ret | 0);

                case TokenType.Property:
                    return(ret | 1);

                default:
                    goto exit;
                }

            case CodedIndex.MethodDefOrRef:
                ret = token.RID << 1;
                switch (token.TokenType)
                {
                case TokenType.Method:
                    return(ret | 0);

                case TokenType.MemberRef:
                    return(ret | 1);

                default:
                    goto exit;
                }

            case CodedIndex.MemberForwarded:
                ret = token.RID << 1;
                switch (token.TokenType)
                {
                case TokenType.Field:
                    return(ret | 0);

                case TokenType.Method:
                    return(ret | 1);

                default:
                    goto exit;
                }

            case CodedIndex.Implementation:
                ret = token.RID << 2;
                switch (token.TokenType)
                {
                case TokenType.File:
                    return(ret | 0);

                case TokenType.AssemblyRef:
                    return(ret | 1);

                case TokenType.ExportedType:
                    return(ret | 2);

                default:
                    goto exit;
                }

            case CodedIndex.CustomAttributeType:
                ret = token.RID << 3;
                switch (token.TokenType)
                {
                case TokenType.Method:
                    return(ret | 2);

                case TokenType.MemberRef:
                    return(ret | 3);

                default:
                    goto exit;
                }

            case CodedIndex.ResolutionScope:
                ret = token.RID << 2;
                switch (token.TokenType)
                {
                case TokenType.Module:
                    return(ret | 0);

                case TokenType.ModuleRef:
                    return(ret | 1);

                case TokenType.AssemblyRef:
                    return(ret | 2);

                case TokenType.TypeRef:
                    return(ret | 3);

                default:
                    goto exit;
                }

            case CodedIndex.TypeOrMethodDef:
                ret = token.RID << 1;
                switch (token.TokenType)
                {
                case TokenType.TypeDef:
                    return(ret | 0);

                case TokenType.Method:
                    return(ret | 1);

                default:
                    goto exit;
                }

            default:
                goto exit;
            }
exit:
            throw new ArgumentException();
        }