decompiler
1.0.0
|
An iterator over out-bound edges for a single ValueSet node in a data-flow system. More...
Public Member Functions | |
ValueSetEdge (ValueSet *node, const vector< ValueSet *> &roots) | |
Construct an iterator over the outbound edges of the given ValueSet node. More... | |
ValueSet * | getNext (void) |
Get the ValueSet pointed to by this iterator and advance the iterator. More... | |
Private Attributes | |
const vector< ValueSet * > * | rootEdges |
The list of nodes attached to the simulated root node (or NULL) | |
int4 | rootPos |
The iterator position for the simulated root node. | |
Varnode * | vn |
The Varnode attached to a normal ValueSet node (or NULL) | |
list< PcodeOp * >::const_iterator | iter |
The iterator position for a normal ValueSet node. | |
An iterator over out-bound edges for a single ValueSet node in a data-flow system.
This is a helper class for walking a collection of ValueSets as a graph. Mostly the graph mirrors the data-flow of the Varnodes underlying the ValueSets, but there is support for a simulated root node. This class acts as an iterator over the outgoing edges of a particular ValueSet in the graph.
ghidra::ValueSetSolver::ValueSetEdge::ValueSetEdge | ( | ValueSet * | node, |
const vector< ValueSet *> & | roots | ||
) |
Construct an iterator over the outbound edges of the given ValueSet node.
Mostly this just forwards the ValueSets attached to output Varnodes of the descendant ops of the Varnode attached to the given node, but this allows for an artificial root node so we can simulate multiple input nodes.
node | is the given ValueSet node (NULL if this is the simulated root) |
roots | is the list of input ValueSets to use for the simulated root |
References ghidra::ValueSet::getVarnode().
ValueSet * ghidra::ValueSetSolver::ValueSetEdge::getNext | ( | void | ) |
Get the ValueSet pointed to by this iterator and advance the iterator.
This method assumes all Varnodes with an attached ValueSet have been marked.
References ghidra::PcodeOp::getOut(), ghidra::Varnode::getValueSet(), and ghidra::Varnode::isMark().
Referenced by ghidra::ValueSetSolver::component(), and ghidra::ValueSetSolver::visit().