public interface

ICBlock

implements ICCompound Iterable<T>
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICBlock

Class Overview

C AST interface to represent a sequence of statements.

Example:

 {
     stm0;
     stm1;
     stm2;
 }
 

Statements cannot be null. An exception will be raised if an attempt to insert a null statement is made.

Summary

Public Methods
abstract ICBlock add(ICStatement stm)
abstract ICBlock addAll(ICBlock b)
abstract ICBlock addAll(ICStatement... stms)
abstract void clear()
Remove all statements of the block, making the block effectively empty: {}.
abstract ICBlock duplicate()
Deep duplication of the element.
abstract void generateBody(COutputSink out, boolean methodBody)
Raw body generation, the caller is responsible for calling generateEnter/generateExit
abstract void generateFooter(COutputSink out)
abstract void generateHeader(COutputSink out)
abstract ICStatement get(int index)
abstract List<ICStatement> getAll()
abstract ICStatement getLast()
abstract void insert(int index, ICStatement stm)
abstract void insertAll(int index, ICBlock srcblk)
Insert all statements of a source block into this block.
abstract boolean isEmpty()
abstract ICStatement remove(int index)
abstract boolean remove(ICStatement stm)
Remove a statement from the block.
abstract ICStatement removeLast()
abstract void set(int index, ICStatement stm)
abstract int size()
[Expand]
Inherited Methods
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICCompound
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICElement
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement
From interface java.lang.Iterable

Public Methods

public abstract ICBlock add (ICStatement stm)

public abstract ICBlock addAll (ICBlock b)

public abstract ICBlock addAll (ICStatement... stms)

public abstract void clear ()

Remove all statements of the block, making the block effectively empty: {}. Do not confuse this method with reset().

public abstract ICBlock duplicate ()

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

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

public abstract void generateBody (COutputSink out, boolean methodBody)

Raw body generation, the caller is responsible for calling generateEnter/generateExit

public abstract void generateFooter (COutputSink out)

public abstract void generateHeader (COutputSink out)

public abstract ICStatement get (int index)

public abstract List<ICStatement> getAll ()

public abstract ICStatement getLast ()

public abstract void insert (int index, ICStatement stm)

public abstract void insertAll (int index, ICBlock srcblk)

Insert all statements of a source block into this block. The source block is left untouched.

Parameters
index 0-based insertion index into this block
srcblk source block

public abstract boolean isEmpty ()

public abstract ICStatement remove (int index)

public abstract boolean remove (ICStatement stm)

Remove a statement from the block. Does not throw if the statement is not found.

Parameters
stm mandatory statement
Returns
  • indicates success

public abstract ICStatement removeLast ()

public abstract void set (int index, ICStatement stm)

public abstract int size ()