#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?