public override void Search(PEFile module, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var metadata = module.Metadata; var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } foreach (var handle in metadata.MethodDefinitions) { cancellationToken.ThrowIfCancellationRequested(); var md = metadata.GetMethodDefinition(handle); if (!md.HasBody() || !MethodIsLiteralMatch(module, md)) { continue; } var method = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(method)) { continue; } OnFoundResult(method); } foreach (var handle in metadata.FieldDefinitions) { cancellationToken.ThrowIfCancellationRequested(); var fd = metadata.GetFieldDefinition(handle); if (!fd.HasFlag(System.Reflection.FieldAttributes.Literal)) { continue; } var constantHandle = fd.GetDefaultValue(); if (constantHandle.IsNil) { continue; } var constant = metadata.GetConstant(constantHandle); var blob = metadata.GetBlobReader(constant.Value); if (!IsLiteralMatch(metadata, blob.ReadConstant(constant.TypeCode))) { continue; } IField field = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(field)) { continue; } OnFoundResult(field); } }
public override void Search(PEFile module, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } var root = ((MetadataModule)typeSystem.MainModule).RootNamespace; Search(module, root); }
public override void Search(PEFile module) { if (searchTermToken.IsNil) { return; } var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } switch (searchTermToken.Kind) { case HandleKind.TypeDefinition: var type = ((MetadataModule)typeSystem.MainModule).GetDefinition((TypeDefinitionHandle)searchTermToken); addResult(ResultFromEntity(type)); break; } }
public override void Search(PEFile module, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var metadata = module.Metadata; var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Type) { foreach (var handle in metadata.TypeDefinitions) { cancellationToken.ThrowIfCancellationRequested(); string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch, omitGenerics); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var type = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(type)) { continue; } OnFoundResult(type); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Method) { foreach (var handle in metadata.MethodDefinitions) { cancellationToken.ThrowIfCancellationRequested(); string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch, omitGenerics); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var method = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(method)) { continue; } OnFoundResult(method); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Field) { foreach (var handle in metadata.FieldDefinitions) { cancellationToken.ThrowIfCancellationRequested(); string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch, omitGenerics); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var field = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(field)) { continue; } OnFoundResult(field); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Property) { foreach (var handle in metadata.PropertyDefinitions) { cancellationToken.ThrowIfCancellationRequested(); string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch, omitGenerics); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var property = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(property)) { continue; } OnFoundResult(property); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Event) { foreach (var handle in metadata.EventDefinitions) { cancellationToken.ThrowIfCancellationRequested(); string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch, omitGenerics); if (!IsMatch(languageSpecificName)) { continue; } var @event = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); if (!CheckVisibility(@event)) { continue; } OnFoundResult(@event); } } }
public override void Search(PEFile module) { var metadata = module.Metadata; var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Type) { foreach (var handle in metadata.TypeDefinitions) { string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var type = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); addResult(ResultFromEntity(type)); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Method) { foreach (var handle in metadata.MethodDefinitions) { // TODO use method semantics to skip accessors string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var method = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); addResult(ResultFromEntity(method)); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Field) { foreach (var handle in metadata.FieldDefinitions) { string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var field = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); addResult(ResultFromEntity(field)); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Property) { foreach (var handle in metadata.PropertyDefinitions) { string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch); if (languageSpecificName != null && !IsMatch(languageSpecificName)) { continue; } var property = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); addResult(ResultFromEntity(property)); } } if (searchKind == MemberSearchKind.All || searchKind == MemberSearchKind.Member || searchKind == MemberSearchKind.Event) { foreach (var handle in metadata.EventDefinitions) { string languageSpecificName = language.GetEntityName(module, handle, fullNameSearch); if (!IsMatch(languageSpecificName)) { continue; } var @event = ((MetadataModule)typeSystem.MainModule).GetDefinition(handle); addResult(ResultFromEntity(@event)); } } }
public override void Search(PEFile module, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (searchTermToken.IsNil) { return; } var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } var metadataModule = (MetadataModule)typeSystem.MainModule; int row = module.Metadata.GetRowNumber(searchTermToken); switch (searchTermToken.Kind) { case HandleKind.TypeDefinition: if (row < 1 || row > module.Metadata.TypeDefinitions.Count) { break; } var type = metadataModule.GetDefinition((TypeDefinitionHandle)searchTermToken); if (!CheckVisibility(type)) { break; } OnFoundResult(type); break; case HandleKind.MethodDefinition: if (row < 1 || row > module.Metadata.MethodDefinitions.Count) { break; } var method = metadataModule.GetDefinition((MethodDefinitionHandle)searchTermToken); if (!CheckVisibility(method)) { break; } OnFoundResult(method); break; case HandleKind.FieldDefinition: if (row < 1 || row > module.Metadata.FieldDefinitions.Count) { break; } var field = metadataModule.GetDefinition((FieldDefinitionHandle)searchTermToken); if (!CheckVisibility(field)) { break; } OnFoundResult(field); break; case HandleKind.PropertyDefinition: if (row < 1 || row > module.Metadata.PropertyDefinitions.Count) { break; } var property = metadataModule.GetDefinition((PropertyDefinitionHandle)searchTermToken); if (!CheckVisibility(property)) { break; } OnFoundResult(property); break; case HandleKind.EventDefinition: if (row < 1 || row > module.Metadata.EventDefinitions.Count) { break; } var @event = metadataModule.GetDefinition((EventDefinitionHandle)searchTermToken); if (!CheckVisibility(@event)) { break; } OnFoundResult(@event); break; } }
public override void Search(PEFile module) { if (searchTermToken.IsNil) { return; } var typeSystem = module.GetTypeSystemOrNull(); if (typeSystem == null) { return; } var metadataModule = (MetadataModule)typeSystem.MainModule; int row = module.Metadata.GetRowNumber(searchTermToken); switch (searchTermToken.Kind) { case HandleKind.TypeDefinition: if (row < 1 || row > module.Metadata.TypeDefinitions.Count) { break; } var type = metadataModule.GetDefinition((TypeDefinitionHandle)searchTermToken); addResult(ResultFromEntity(type)); break; case HandleKind.MethodDefinition: if (row < 1 || row > module.Metadata.MethodDefinitions.Count) { break; } var method = metadataModule.GetDefinition((MethodDefinitionHandle)searchTermToken); addResult(ResultFromEntity(method)); break; case HandleKind.FieldDefinition: if (row < 1 || row > module.Metadata.FieldDefinitions.Count) { break; } var field = metadataModule.GetDefinition((FieldDefinitionHandle)searchTermToken); addResult(ResultFromEntity(field)); break; case HandleKind.PropertyDefinition: if (row < 1 || row > module.Metadata.PropertyDefinitions.Count) { break; } var property = metadataModule.GetDefinition((PropertyDefinitionHandle)searchTermToken); addResult(ResultFromEntity(property)); break; case HandleKind.EventDefinition: if (row < 1 || row > module.Metadata.EventDefinitions.Count) { break; } var @event = metadataModule.GetDefinition((EventDefinitionHandle)searchTermToken); addResult(ResultFromEntity(@event)); break; } }