#include <block.h>
Public Member Functions | |
| void | appendCommand (CFGCommand *command) |
| Common::Array< CFGCommand * > | getLinearCommands () const |
| CFGCommand * | getConditionCommand () const |
| bool | isEmpty () const |
| bool | isCondition () const |
| void | setBranches (Block *trueBranch, Block *falseBranch) |
| void | setFollower (Block *follower) |
| void | addPredecessor (Block *predecessor) |
| Block * | getTrueBranch () const |
| Block * | getFalseBranch () const |
| Block * | getFollower () const |
| void | print () const |
| bool | hasControlStructure () const |
| ControlStructure * | getControlStructure () const |
| void | setControlStructure (ControlStructure *controlStructure) |
| bool | isInfiniteLoopStart () const |
| void | setInfiniteLoopStart (bool infiniteLoopStart) |
| bool | allowDuplication () const |
| bool | hasPredecessor (Block *predecessor) const |
| bool | hasSuccessor (Block *successor) const |
| Block * | findMergePoint (Block *other) |
| bool | checkAllBranchesConverge (Block *junction) const |
An aggregate of script commands
Commands in the same group are always executed in sequence.
This class is a node in the disassembly node graph.
| void Stark::Tools::Block::appendCommand | ( | CFGCommand * | command | ) |
Add a command at the end of the block, and set it as the command's block
| Common::Array<CFGCommand *> Stark::Tools::Block::getLinearCommands | ( | ) | const |
Get the commands from the block that are not part of a condition
| CFGCommand* Stark::Tools::Block::getConditionCommand | ( | ) | const |
Get the command from the block that plays as a condition in a control structure
| bool Stark::Tools::Block::isEmpty | ( | ) | const |
Does the block contain commands?
| bool Stark::Tools::Block::isCondition | ( | ) | const |
Can the block branch?
Blocks are linked together in the block graph with these relationships:
| void Stark::Tools::Block::print | ( | ) | const |
Print a list of this block's commands to the debug output
| bool Stark::Tools::Block::hasControlStructure | ( | ) | const |
The high level control structure this block has the main role in
| bool Stark::Tools::Block::isInfiniteLoopStart | ( | ) | const |
Flag to indicate this block is the first in an unconditional infinite loop
| bool Stark::Tools::Block::allowDuplication | ( | ) | const |
Can this block appear multiple times in the decompiled output?