public interface

ICAssignment

implements ICSourceElement ICStatement
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICAssignment

Class Overview

C AST interface to represent assignments.

Example of a simple assignment:

 left = right
 

A simple assignment can be modified to represent non-standard assignments:

  • A combined-operator assignment
  • A unary-operator assignment

Summary

Public Methods
abstract ICAssignment duplicate()
Deep duplication of the element.
abstract ICAssignment duplicate(boolean omitDeclaration)
abstract ICOperator getCombinedOperator()
Get the operator used for combined operator assignments
abstract ICLeftExpression getLeft()
Get the left-hand side of the assignment.
abstract ICExpression getRight()
Get the right-hand side of the assignment.
abstract void getUnaryOperator(boolean[] r)
Get the operator used for a unary operator assignment.
abstract boolean isCombinedOperatorAssignment()
Check if the assignment is a combined operator assignment (+=, -=, ...).
abstract boolean isSimpleAssignment()
Check if the assignment is simple, i.e.
abstract boolean isUnaryOperatorAssignment()
Check if the assignment is a unary operator assignment (++, --).
abstract void setCombinedOperator(ICOperator op)
abstract void setCombinedOperatorAssignment(ICOperator op, ICExpression right)
Set an extra operator, to transform the simple assignment (=) into one of the 11 allowed combined assignment operators.
abstract void setLeft(ICLeftExpression left)
abstract void setRight(ICExpression right)
abstract void setUnaryOperator(boolean increment, boolean prefix)
[Expand]
Inherited Methods
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICElement
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICSourceElement
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement

Public Methods

public abstract ICAssignment duplicate ()

Deep duplication of the element. Sub-elements are duplicated.

Note: ICClass, ICMethod, ICField, ICIdentifier, ICConstant, ICType and ICLabel are not duplicated.

public abstract ICAssignment duplicate (boolean omitDeclaration)

public abstract ICOperator getCombinedOperator ()

Get the operator used for combined operator assignments

public abstract ICLeftExpression getLeft ()

Get the left-hand side of the assignment.

public abstract ICExpression getRight ()

Get the right-hand side of the assignment.

Warning: null for unary operator assignments, and does not represent the final right value for combined operator assignments.

public abstract void getUnaryOperator (boolean[] r)

Get the operator used for a unary operator assignment.

Parameters
r will be filled with two values: r[0] is true for ++, false for --; r[1] is true for prefix ++/--, false for postfix ++/--

public abstract boolean isCombinedOperatorAssignment ()

Check if the assignment is a combined operator assignment (+=, -=, ...).

public abstract boolean isSimpleAssignment ()

Check if the assignment is simple, i.e. it is not a combined operator assignment and not a unary operator assignment.

public abstract boolean isUnaryOperatorAssignment ()

Check if the assignment is a unary operator assignment (++, --).

public abstract void setCombinedOperator (ICOperator op)

public abstract void setCombinedOperatorAssignment (ICOperator op, ICExpression right)

Set an extra operator, to transform the simple assignment (=) into one of the 11 allowed combined assignment operators.

This operation is irreversible!

Parameters
op non-null, can be: MUL, DIV, ADD, SUB, REM, SHL, SHR, USHR, AND, XOR, OR
right optional, updated right member of the assignment
Throws
IllegalStateException if the assignment is a unary operator assignment

public abstract void setLeft (ICLeftExpression left)

public abstract void setRight (ICExpression right)

Throws
IllegalStateException if the assignment is a unary operator assignment

public abstract void setUnaryOperator (boolean increment, boolean prefix)