using Mono.Cecil;
using Mono.Cecil.Cil;
namespace StardewModdingAPI.Framework.ModLoading
{
/// Performs predefined logic for detected CIL instructions.
internal interface IInstructionHandler
{
/*********
** Accessors
*********/
/// A brief noun phrase indicating what the handler matches.
string NounPhrase { get; }
/*********
** Methods
*********/
/// Perform the predefined logic for a method if applicable.
/// The mod containing the instruction.
/// The assembly module containing the instruction.
/// The method definition containing the instruction.
/// Metadata for mapping assemblies to the current platform.
/// Whether the mod was compiled on a different platform.
InstructionHandleResult Handle(IModMetadata mod, ModuleDefinition module, MethodDefinition method, PlatformAssemblyMap assemblyMap, bool platformChanged);
/// Perform the predefined logic for an instruction if applicable.
/// The mod containing the instruction.
/// The assembly module containing the instruction.
/// The CIL processor.
/// The instruction to handle.
/// Metadata for mapping assemblies to the current platform.
/// Whether the mod was compiled on a different platform.
InstructionHandleResult Handle(IModMetadata mod, ModuleDefinition module, ILProcessor cil, Instruction instruction, PlatformAssemblyMap assemblyMap, bool platformChanged);
}
}