Class Comp
- Namespace
- ICSharpCode.Decompiler.IL
- Assembly
- ICSharpCode.Decompiler.dll
Comparison. The inputs must be both integers; or both floats; or both object references. Object references can only be compared for equality or inequality. Floating-point comparisons evaluate to 0 (false) when an input is NaN, except for 'NaN != NaN' which evaluates to 1 (true).
public sealed class Comp : BinaryInstruction, ILiftableInstruction
- Inheritance
-
Comp
- Implements
- Inherited Members
Constructors
Comp(ComparisonKind, ComparisonLiftingKind, StackType, Sign, ILInstruction, ILInstruction)
public Comp(ComparisonKind kind, ComparisonLiftingKind lifting, StackType inputType, Sign sign, ILInstruction left, ILInstruction right)
Parameters
kind
ComparisonKindlifting
ComparisonLiftingKindinputType
StackTypesign
Signleft
ILInstructionright
ILInstruction
Comp(ComparisonKind, Sign, ILInstruction, ILInstruction)
public Comp(ComparisonKind kind, Sign sign, ILInstruction left, ILInstruction right)
Parameters
kind
ComparisonKindsign
Signleft
ILInstructionright
ILInstruction
Fields
InputType
Gets the stack type of the comparison inputs. For lifted comparisons, this is the underlying input type.
public StackType InputType
Field Value
LiftingKind
public ComparisonLiftingKind LiftingKind
Field Value
Sign
If this is an integer comparison, specifies the sign used to interpret the integers.
public readonly Sign Sign
Field Value
Properties
IsLifted
Gets whether the instruction was lifted; that is, whether is accepts potentially nullable arguments.
public bool IsLifted { get; }
Property Value
Kind
public ComparisonKind Kind { get; set; }
Property Value
ResultType
Gets the stack type of the value produced by this instruction.
public override StackType ResultType { get; }
Property Value
UnderlyingResultType
If the instruction is lifted and returns a nullable result, gets the underlying result type.
Note that not all lifted instructions return a nullable result: C# comparisons always return a bool!
public StackType UnderlyingResultType { get; }
Property Value
Methods
AcceptVisitor(ILVisitor)
Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.
public override void AcceptVisitor(ILVisitor visitor)
Parameters
visitor
ILVisitor
AcceptVisitor<T>(ILVisitor<T>)
Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.
public override T AcceptVisitor<T>(ILVisitor<T> visitor)
Parameters
visitor
ILVisitor<T>
Returns
- T
Type Parameters
T
AcceptVisitor<C, T>(ILVisitor<C, T>, C)
Calls the Visit*-method on the visitor corresponding to the concrete type of this instruction.
public override T AcceptVisitor<C, T>(ILVisitor<C, T> visitor, C context)
Parameters
visitor
ILVisitor<C, T>context
C
Returns
- T
Type Parameters
C
T
LogicNot(ILInstruction)
public static Comp LogicNot(ILInstruction arg)
Parameters
arg
ILInstruction
Returns
LogicNot(ILInstruction, bool)
public static Comp LogicNot(ILInstruction arg, bool isLifted)
Parameters
arg
ILInstructionisLifted
bool
Returns
PerformMatch(ILInstruction?, ref Match)
protected override bool PerformMatch(ILInstruction? other, ref Match match)
Parameters
other
ILInstructionmatch
Match
Returns
WriteTo(ITextOutput, ILAstWritingOptions)
Writes the ILAst to the text output.
public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
Parameters
output
ITextOutputoptions
ILAstWritingOptions