Back to Harmony

Class CodeMatch

docs/api/HarmonyLib.CodeMatch.html

2.4.2.021.5 KB
Original Source

Class CodeMatch

A CodeInstruction match

Inheritance

System.Object

CodeInstruction

CodeMatch

Inherited Members

CodeInstruction.opcode

CodeInstruction.operand

CodeInstruction.labels

CodeInstruction.blocks

CodeInstruction.Clone()

CodeInstruction.Clone(OpCode)

CodeInstruction.Clone(Object)

[CodeInstruction.Call(Type, String, Type[], Type[])](HarmonyLib.CodeInstruction.html#HarmonyLib_CodeInstruction_Call_System_Type_System_String_System_Type System_Type )

[CodeInstruction.Call(String, Type[], Type[])](HarmonyLib.CodeInstruction.html#HarmonyLib_CodeInstruction_Call_System_String_System_Type System_Type )

CodeInstruction.Call(Expression<Action>)

[CodeInstruction.Call<T>(Expression<Action<T>>)](HarmonyLib.CodeInstruction.html#HarmonyLib_CodeInstruction_Call 1_System_Linq_Expressions_Expression_System_Action_ 0___)

[CodeInstruction.Call<T, TResult>(Expression<Func<T, TResult>>)](HarmonyLib.CodeInstruction.html#HarmonyLib_CodeInstruction_Call 2_System_Linq_Expressions_Expression_System_Func_ 0 1 )

CodeInstruction.Call(LambdaExpression)

[CodeInstruction.CallClosure<T>(T)](HarmonyLib.CodeInstruction.html#HarmonyLib_CodeInstruction_CallClosure 1_ 0_)

CodeInstruction.LoadField(Type, String, Boolean)

CodeInstruction.StoreField(Type, String)

CodeInstruction.LoadLocal(Int32, Boolean)

CodeInstruction.StoreLocal(Int32)

CodeInstruction.LoadArgument(Int32, Boolean)

CodeInstruction.StoreArgument(Int32)

CodeInstruction.HasBlock(ExceptionBlockType)

Namespace : HarmonyLib
Assembly : 0Harmony.dll
Syntax
public class CodeMatch : CodeInstruction

Constructors

CodeMatch(CodeInstruction, String)

Creates a code match

Declaration
public CodeMatch(CodeInstruction instruction, string name = null)
Parameters
TypeNameDescription
CodeInstructioninstruction

The CodeInstruction

| | System.String | name |

An optional name

|

CodeMatch(Func<CodeInstruction, Boolean>, String)

Creates a code match

Declaration
public CodeMatch(Func<CodeInstruction, bool> predicate, string name = null)
Parameters
TypeNameDescription
System.Func<CodeInstruction, System.Boolean>predicate

The predicate

| | System.String | name |

An optional name

|

CodeMatch(Expression<Action>, String)

Creates a code match that calls a method

Declaration
public CodeMatch(Expression<Action> expression, string name = null)
Parameters
TypeNameDescription
System.Linq.Expressions.Expression\expression

The lambda expression using the method

| | System.String | name |

The optional name

|

CodeMatch(LambdaExpression, String)

Creates a code match that calls a method

Declaration
public CodeMatch(LambdaExpression expression, string name = null)
Parameters
TypeNameDescription
System.Linq.Expressions.LambdaExpressionexpression

The lambda expression using the method

| | System.String | name |

The optional name

|

CodeMatch(Nullable<OpCode>, Object, String)

Creates a code match

Declaration
public CodeMatch(OpCode? opcode = default(OpCode? ), object operand = null, string name = null)
Parameters
TypeNameDescription
System.Nullable\opcode

The optional opcode

| | System.Object | operand |

The optional operand

| | System.String | name |

The optional name

|

Fields

jumpsFrom

The jumps from the match

Declaration
public List<int> jumpsFrom
Field Value
TypeDescription
System.Collections.Generic.List\

jumpsTo

The jumps to the match

Declaration
public List<int> jumpsTo
Field Value
TypeDescription
System.Collections.Generic.List\

name

The name of the match

Declaration
public string name
Field Value
TypeDescription
System.String

opcodeSet

The matched opcodes

Declaration
public HashSet<OpCode> opcodeSet
Field Value
TypeDescription
System.Collections.Generic.HashSet\

operands

The matched operands

Declaration
public List<object> operands
Field Value
TypeDescription
System.Collections.Generic.List\

predicate

The match predicate

Declaration
public Func<CodeInstruction, bool> predicate
Field Value
TypeDescription
System.Func<CodeInstruction, System.Boolean>

Methods

Branches(String)

Creates a code match for branching

Declaration
public static CodeMatch Branches(string name = null)
Parameters
TypeNameDescription
System.Stringname

An optional name

|

Returns
TypeDescription
CodeMatch

A new code match

|

Calls(Expression<Action>)

Creates a code match that calls a method

Declaration
public static CodeMatch Calls(Expression<Action> expression)
Parameters
TypeNameDescription
System.Linq.Expressions.Expression\expression

The lambda expression using the method

|

Returns
TypeDescription
CodeMatch

A new code match

|

Calls(LambdaExpression)

Creates a code match that calls a method

Declaration
public static CodeMatch Calls(LambdaExpression expression)
Parameters
TypeNameDescription
System.Linq.Expressions.LambdaExpressionexpression

The lambda expression using the method

|

Returns
TypeDescription
CodeMatch

A new code match

|

Calls(MethodInfo)

Tests if the code instruction calls the method/constructor

Declaration
public static CodeMatch Calls(MethodInfo method)
Parameters
TypeNameDescription
System.Reflection.MethodInfomethod

The method

|

Returns
TypeDescription
CodeMatch

A new code match

|

IsLdarg(Nullable<Int32>)

Tests for any form of Ldarg*

Declaration
public static CodeMatch IsLdarg(int? n = default(int? ))
Parameters
TypeNameDescription
System.Nullable\n

The (optional) index

|

Returns
TypeDescription
CodeMatch

A new code match

|

IsLdarga(Nullable<Int32>)

Tests for Ldarga/Ldarga_S

Declaration
public static CodeMatch IsLdarga(int? n = default(int? ))
Parameters
TypeNameDescription
System.Nullable\n

The (optional) index

|

Returns
TypeDescription
CodeMatch

A new code match

|

IsLdloc(LocalBuilder)

Tests for any form of Ldloc*

Declaration
public static CodeMatch IsLdloc(LocalBuilder variable = null)
Parameters
TypeNameDescription
System.Reflection.Emit.LocalBuildervariable

The optional local variable

|

Returns
TypeDescription
CodeMatch

A new code match

|

IsStarg(Nullable<Int32>)

Tests for Starg/Starg_S

Declaration
public static CodeMatch IsStarg(int? n = default(int? ))
Parameters
TypeNameDescription
System.Nullable\n

The (optional) index

|

Returns
TypeDescription
CodeMatch

A new code match

|

IsStloc(LocalBuilder)

Tests for any form of Stloc*

Declaration
public static CodeMatch IsStloc(LocalBuilder variable = null)
Parameters
TypeNameDescription
System.Reflection.Emit.LocalBuildervariable

The optional local variable

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsArgument(Boolean, String)

Creates a code match for argument loads

Declaration
public static CodeMatch LoadsArgument(bool useAddress = false, string name = null)
Parameters
TypeNameDescription
System.BooleanuseAddress

Whether to match for address loads

| | System.String | name |

An optional name

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsConstant()

Tests if the code instruction loads a constant

Declaration
public static CodeMatch LoadsConstant()
Returns
TypeDescription
CodeMatch

A new code match

|

LoadsConstant(Double)

Tests if the code instruction loads a floating point constant

Declaration
public static CodeMatch LoadsConstant(double number)
Parameters
TypeNameDescription
System.Doublenumber

The floating point constant

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsConstant(Enum)

Tests if the code instruction loads an enum constant

Declaration
public static CodeMatch LoadsConstant(Enum e)
Parameters
TypeNameDescription
System.Enume

The enum

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsConstant(Int64)

Tests if the code instruction loads an integer constant

Declaration
public static CodeMatch LoadsConstant(long number)
Parameters
TypeNameDescription
System.Int64number

The integer constant

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsConstant(String)

Tests if the code instruction loads a string constant

Declaration
public static CodeMatch LoadsConstant(string str)
Parameters
TypeNameDescription
System.Stringstr

The string

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsField(FieldInfo, Boolean)

Tests if the code instruction loads a field

Declaration
public static CodeMatch LoadsField(FieldInfo field, bool byAddress = false)
Parameters
TypeNameDescription
System.Reflection.FieldInfofield

The field

| | System.Boolean | byAddress |

Set to true if the address of the field is loaded

|

Returns
TypeDescription
CodeMatch

A new code match

|

LoadsLocal(Boolean, String)

Creates a code match for local loads

Declaration
public static CodeMatch LoadsLocal(bool useAddress = false, string name = null)
Parameters
TypeNameDescription
System.BooleanuseAddress

Whether to match for address loads

| | System.String | name |

An optional name

|

Returns
TypeDescription
CodeMatch

A new code match

|

StoresArgument(String)

Creates a code match for argument stores

Declaration
public static CodeMatch StoresArgument(string name = null)
Parameters
TypeNameDescription
System.Stringname

An optional name

|

Returns
TypeDescription
CodeMatch

A new code match

|

StoresField(FieldInfo)

Tests if the code instruction stores a field

Declaration
public static CodeMatch StoresField(FieldInfo field)
Parameters
TypeNameDescription
System.Reflection.FieldInfofield

The field

|

Returns
TypeDescription
CodeMatch

A new code match

|

StoresLocal(String)

Creates a code match for local stores

Declaration
public static CodeMatch StoresLocal(string name = null)
Parameters
TypeNameDescription
System.Stringname

An optional name

|

Returns
TypeDescription
CodeMatch

A new code match

|

ToString()

Returns a string that represents the match

Declaration
public override string ToString()
Returns
TypeDescription
System.String

A string representation

|

Overrides

CodeInstruction.ToString()

WithOpcodes(HashSet<OpCode>, Object, String)

Creates a code match

Declaration
public static CodeMatch WithOpcodes(HashSet<OpCode> opcodes, object operand = null, string name = null)
Parameters
TypeNameDescription
System.Collections.Generic.HashSet\opcodes

The opcodes

| | System.Object | operand |

The optional operand

| | System.String | name |

The optional name

|

Returns
TypeDescription
CodeMatch

Extension Methods

CodeInstructionExtensions.OperandIs(CodeInstruction, Object)

CodeInstructionExtensions.OperandIs(CodeInstruction, MemberInfo)

CodeInstructionExtensions.Is(CodeInstruction, OpCode, Object)

CodeInstructionExtensions.Is(CodeInstruction, OpCode, MemberInfo)

CodeInstructionExtensions.IsLdarg(CodeInstruction, Nullable<Int32>)

CodeInstructionExtensions.IsLdarga(CodeInstruction, Nullable<Int32>)

CodeInstructionExtensions.IsStarg(CodeInstruction, Nullable<Int32>)

CodeInstructionExtensions.IsLdloc(CodeInstruction, LocalBuilder)

CodeInstructionExtensions.IsStloc(CodeInstruction, LocalBuilder)

CodeInstructionExtensions.Branches(CodeInstruction, out Nullable<Label>)

CodeInstructionExtensions.Calls(CodeInstruction, MethodInfo)

CodeInstructionExtensions.LoadsConstant(CodeInstruction)

CodeInstructionExtensions.LoadsConstant(CodeInstruction, Int64)

CodeInstructionExtensions.LoadsConstant(CodeInstruction, Double)

CodeInstructionExtensions.LoadsConstant(CodeInstruction, Enum)

CodeInstructionExtensions.LoadsConstant(CodeInstruction, String)

CodeInstructionExtensions.LoadsField(CodeInstruction, FieldInfo, Boolean)

CodeInstructionExtensions.StoresField(CodeInstruction, FieldInfo)

CodeInstructionExtensions.LocalIndex(CodeInstruction)

CodeInstructionExtensions.ArgumentIndex(CodeInstruction)

CodeInstructionExtensions.WithLabels(CodeInstruction, Label[])

CodeInstructionExtensions.WithLabels(CodeInstruction, IEnumerable<Label>)

CodeInstructionExtensions.ExtractLabels(CodeInstruction)

CodeInstructionExtensions.MoveLabelsTo(CodeInstruction, CodeInstruction)

CodeInstructionExtensions.MoveLabelsFrom(CodeInstruction, CodeInstruction)

CodeInstructionExtensions.WithBlocks(CodeInstruction, ExceptionBlock[])

CodeInstructionExtensions.WithBlocks(CodeInstruction, IEnumerable<ExceptionBlock>)

CodeInstructionExtensions.ExtractBlocks(CodeInstruction)

CodeInstructionExtensions.MoveBlocksTo(CodeInstruction, CodeInstruction)

CodeInstructionExtensions.MoveBlocksFrom(CodeInstruction, CodeInstruction)