// 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;
}
}
}