﻿<?xml version="1.0" encoding="utf-8"?><Type Name="InstructionRocks" FullName="Gendarme.Framework.Rocks.InstructionRocks"><TypeSignature Language="C#" Value="public static class InstructionRocks" /><TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit InstructionRocks extends System.Object" /><AssemblyInfo><AssemblyName>Gendarme.Framework</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>System.Object</BaseTypeName></Base><Interfaces /><Docs><summary>
            InstructionRocks contains extensions methods for Instruction
            and the related collection classes.
            </summary><remarks>To be added.</remarks></Docs><Members><Member MemberName="GetField"><MemberSignature Language="C#" Value="public static Mono.Cecil.FieldDefinition GetField (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.FieldDefinition GetField(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.FieldDefinition</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Get the FieldDefinition associated with the Instruction.
            </summary><returns>The FieldDefinition associated with the instruction
            or null if the instruction does apply to fields.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMethod"><MemberSignature Language="C#" Value="public static Mono.Cecil.MethodReference GetMethod (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.MethodReference GetMethod(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.MethodReference</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Get the MethodReference or MethodDefinition (but not a CallSite) associated with the Instruction
            </summary><returns /><remarks>Older (pre 0.9) Cecil CallSite did not inherit from MethodReference so this was not an issue</remarks></Docs></Member><Member MemberName="GetOperand"><MemberSignature Language="C#" Value="public static object GetOperand (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig object GetOperand(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Object</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method inside which the instruction comes from.</param><summary>
            Return the operand of the Instruction. For macro instruction the operand is constructed.
            </summary><returns>Return the operand that the non-macro version of this Instruction would have.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetOperandType"><MemberSignature Language="C#" Value="public static Mono.Cecil.TypeReference GetOperandType (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.TypeReference GetOperandType(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.TypeReference</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method inside which the instruction comes from.</param><summary>
            Return the type associated with the instruction's operand (INCOMPLETE).
            </summary><returns>Return a TypeReference compatible with the instruction operand or null.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetParameter"><MemberSignature Language="C#" Value="public static Mono.Cecil.ParameterDefinition GetParameter (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.ParameterDefinition GetParameter(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.ParameterDefinition</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method inside which the instruction comes from.
            Needed for the macro instruction where only the variable index is available.</param><summary>
            Get the ParameterDefinition associated with the Instruction.
            </summary><returns>The ParameterDefinition associated with the instruction
            or null if the instruction does apply to arguments.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetPopCount"><MemberSignature Language="C#" Value="public static int GetPopCount (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.IMethodSignature method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetPopCount(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.IMethodSignature method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.IMethodSignature" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method inside which the instruction comes from
            (needed for StackBehaviour.Varpop).</param><summary>
            Get the number of values removed on the stack for this instruction.
            </summary><returns>The number of value removed (pop) from the stack for this instruction.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetPushCount"><MemberSignature Language="C#" Value="public static int GetPushCount (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetPushCount(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Get the number of values placed on the stack by this instruction.
            </summary><returns>The number of value added (push) to the stack by this instruction.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetVariable"><MemberSignature Language="C#" Value="public static Mono.Cecil.Cil.VariableDefinition GetVariable (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.Cil.VariableDefinition GetVariable(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method inside which the instruction comes from.
            Needed for the macro instruction where only the variable index is available.</param><summary>
            Get the VariableDefinition associated with the Instruction.
            </summary><returns>The VariableDefinition associated with the instruction
            or null if the instruction does apply to local variables.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="Is"><MemberSignature Language="C#" Value="public static bool Is (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.Cil.Code code);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool Is(class Mono.Cecil.Cil.Instruction self, valuetype Mono.Cecil.Cil.Code code) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="code" Type="Mono.Cecil.Cil.Code" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="code">The Code to compare to.</param><summary>
            Helper method to avoid patterns like "ins.Previous != null &amp;&amp; ins.Previous.OpCode.Code == Code.Newobj"
            and replace it with a shorter "ins.Previous.Is (Code.Newobj)".
            </summary><returns>True if the instruction's code match the specified argument, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsLoadArgument"><MemberSignature Language="C#" Value="public static bool IsLoadArgument (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLoadArgument(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is a load of an argument (ldarg* family).
            </summary><returns>True if the instruction is a load argument/parameter, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsLoadElement"><MemberSignature Language="C#" Value="public static bool IsLoadElement (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLoadElement(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is the load of an element (ldelem* family)
            </summary><returns>True if the instruction is a load element, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsLoadIndirect"><MemberSignature Language="C#" Value="public static bool IsLoadIndirect (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLoadIndirect(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is a load indirect (ldind* family)
            </summary><returns>True if the instruction is a load indirect, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsLoadLocal"><MemberSignature Language="C#" Value="public static bool IsLoadLocal (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLoadLocal(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is a load of a local variable (ldloc* family).
            </summary><returns>True if the instruction is a load local variable, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsOperandZero"><MemberSignature Language="C#" Value="public static bool IsOperandZero (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsOperandZero(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Determine if the instruction operand contains the constant zero (0).
            </summary><returns>True if the operand contains the constant zero (0), False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsStoreArgument"><MemberSignature Language="C#" Value="public static bool IsStoreArgument (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsStoreArgument(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is a store of an argument (starg* family).
            </summary><returns>True if the instruction is a store of a parameter, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="IsStoreLocal"><MemberSignature Language="C#" Value="public static bool IsStoreLocal (this Mono.Cecil.Cil.Instruction self);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsStoreLocal(class Mono.Cecil.Cil.Instruction self) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><summary>
            Return if the Instruction is a store of a local variable (stloc* family).
            </summary><returns>True if the instruction is a store local variable, False otherwise</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="TraceBack"><MemberSignature Language="C#" Value="public static Mono.Cecil.Cil.Instruction TraceBack (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.IMethodSignature method);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.Cil.Instruction TraceBack(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.IMethodSignature method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.Cil.Instruction</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.IMethodSignature" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method from which the instruction was extracted.</param><summary>
            Return the instruction that match the current instruction. This is computed by
            substracting push and adding pop counts until the total becomes zero.
            </summary><returns>The instruction that match the current instruction.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="TraceBack"><MemberSignature Language="C#" Value="public static Mono.Cecil.Cil.Instruction TraceBack (this Mono.Cecil.Cil.Instruction self, Mono.Cecil.IMethodSignature method, int offset);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Cecil.Cil.Instruction TraceBack(class Mono.Cecil.Cil.Instruction self, class Mono.Cecil.IMethodSignature method, int32 offset) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Mono.Cecil.Cil.Instruction</ReturnType></ReturnValue><Parameters><Parameter Name="self" Type="Mono.Cecil.Cil.Instruction" RefType="this" /><Parameter Name="method" Type="Mono.Cecil.IMethodSignature" /><Parameter Name="offset" Type="System.Int32" /></Parameters><Docs><param name="self">The Instruction on which the extension method can be called.</param><param name="method">The method from which the instruction was extracted.</param><param name="offset">Offset to add the the Pop count. Useful to track several parameters to a method.</param><summary>
            Return the instruction that match the current instruction. This is computed by
            substracting push and adding pop counts until the total becomes zero.
            </summary><returns>The instruction that match the current instruction.</returns><remarks>To be added.</remarks></Docs></Member></Members></Type>