// dnlib: See LICENSE.txt for more info using dnlib.Utils; using System; namespace dnlib.DotNet { /// /// A collection of s /// public class ResourceCollection : LazyList { /// /// Default constructor /// public ResourceCollection() { } /// /// Constructor /// /// List listener public ResourceCollection(IListListener listener) : base(listener) { } /// /// Constructor /// /// Initial length of the list /// Context passed to /// Delegate instance that returns original values public ResourceCollection(int length, object context, Func readOriginalValue) : base(length, context, readOriginalValue) { } /// /// Finds the index of a resource /// /// Name of resource /// The index of the or -1 if none was found public int IndexOf(UTF8String name) { int i = -1; foreach (var resource in this) { i++; if (resource is not null && resource.Name == name) return i; } return -1; } /// /// Finds the index of an embedded resource /// /// Name of resource /// The index of the or -1 if none was found public int IndexOfEmbeddedResource(UTF8String name) { int i = -1; foreach (var resource in this) { i++; if (resource is not null && resource.ResourceType == ResourceType.Embedded && resource.Name == name) return i; } return -1; } /// /// Finds the index of an assembly linked resource /// /// Name of resource /// The index of the or -1 if none was found public int IndexOfAssemblyLinkedResource(UTF8String name) { int i = -1; foreach (var resource in this) { i++; if (resource is not null && resource.ResourceType == ResourceType.AssemblyLinked && resource.Name == name) return i; } return -1; } /// /// Finds the index of a linked resource /// /// Name of resource /// The index of the or -1 if none was found public int IndexOfLinkedResource(UTF8String name) { int i = -1; foreach (var resource in this) { i++; if (resource is not null && resource.ResourceType == ResourceType.Linked && resource.Name == name) return i; } return -1; } /// /// Finds a resource /// /// Name of resource /// The or null if none was found public Resource Find(UTF8String name) { foreach (var resource in this) { if (resource is not null && resource.Name == name) return resource; } return null; } /// /// Finds an embedded resource /// /// Name of resource /// The or null if none was found public EmbeddedResource FindEmbeddedResource(UTF8String name) { foreach (var resource in this) { if (resource is not null && resource.ResourceType == ResourceType.Embedded && resource.Name == name) return (EmbeddedResource)resource; } return null; } /// /// Finds an assembly linked resource /// /// Name of resource /// The or null if none was found public AssemblyLinkedResource FindAssemblyLinkedResource(UTF8String name) { foreach (var resource in this) { if (resource is not null && resource.ResourceType == ResourceType.AssemblyLinked && resource.Name == name) return (AssemblyLinkedResource)resource; } return null; } /// /// Finds a linked resource /// /// Name of resource /// The or null if none was found public LinkedResource FindLinkedResource(UTF8String name) { foreach (var resource in this) { if (resource is not null && resource.ResourceType == ResourceType.Linked && resource.Name == name) return (LinkedResource)resource; } return null; } } }