decompiler  1.0.0
Public Member Functions | Public Attributes | List of all members
ghidra::PropagationState Class Reference

A class that holds a data-type traversal state during type propagation. More...

#include <coreaction.hh>

Public Member Functions

 PropagationState (Varnode *v)
 Constructor. More...
 
void step (void)
 Advance to the next propagation edge. More...
 
bool valid (void) const
 Return true if there are edges left to iterate.
 

Public Attributes

Varnodevn
 The root Varnode.
 
list< PcodeOp * >::const_iterator iter
 Iterator to current descendant being enumerated.
 
PcodeOpop
 The current descendant or the defining PcodeOp.
 
int4 inslot
 Slot holding Varnode for descendant PcodeOp.
 
int4 slot
 Current edge relative to current PcodeOp.
 

Detailed Description

A class that holds a data-type traversal state during type propagation.

For a given Varnode, this class iterates all the possible edges its data-type might propagate through.

Constructor & Destructor Documentation

◆ PropagationState()

ghidra::PropagationState::PropagationState ( Varnode v)

Member Function Documentation

◆ step()

void ghidra::PropagationState::step ( void  )

Advance to the next propagation edge.

At the high level, this iterates through all the descendant PcodeOps of the root Varnode, then the defining PcodeOp. At the low level, this iterates from the output Varnode of the current PcodeOp then through all the input Varnodes

References ghidra::Varnode::endDescend(), ghidra::Varnode::getDef(), ghidra::PcodeOp::getOut(), and ghidra::PcodeOp::getSlot().

Referenced by ghidra::ActionInferTypes::propagateOneType().


The documentation for this class was generated from the following files: