decompiler  1.0.0
Public Member Functions | Public Attributes | List of all members
ghidra::BlockEdge Struct Reference

A control-flow edge between blocks (FlowBlock) More...

#include <block.hh>

Public Member Functions

 BlockEdge (void)
 Constructor for use with decode.
 
 BlockEdge (FlowBlock *pt, uint4 lab, int4 rev)
 Constructor.
 
void encode (Encoder &encoder) const
 Encode this edge to a stream. More...
 
void decode (Decoder &decoder, BlockMap &resolver)
 Restore this edge from a stream. More...
 

Public Attributes

uint4 label
 Label of the edge.
 
FlowBlockpoint
 Other end of the edge.
 
int4 reverse_index
 Index for edge coming other way.
 

Detailed Description

A control-flow edge between blocks (FlowBlock)

The edge is owned by the source block and can have FlowBlock::edge_flags labels applied to it. The point indicates the FlowBlock at the other end from the source block. NOTE: The control-flow direction of the edge can only be determined from context, whether the edge is in the incoming or outgoing edge list.

Member Function Documentation

◆ decode()

void ghidra::BlockEdge::decode ( Decoder decoder,
BlockMap resolver 
)

Restore this edge from a stream.

Parse an <edge> element

Parameters
decoderis the stream decoder
resolveris used to cross-reference the edge's FlowBlock endpoints

References ghidra::Decoder::closeElement(), ghidra::BlockMap::findLevelBlock(), label, ghidra::Decoder::openElement(), point, ghidra::Decoder::readSignedInteger(), and reverse_index.

Referenced by BlockEdge(), ghidra::FlowBlock::decodeBody(), ghidra::FlowBlock::decodeNextInEdge(), and ghidra::BlockGraph::emit().

◆ encode()

void ghidra::BlockEdge::encode ( Encoder encoder) const

Encode this edge to a stream.

The edge is saved assuming we already know what block we are in.

Parameters
encoderis the stream encoder

References ghidra::Encoder::closeElement(), ghidra::FlowBlock::getIndex(), ghidra::Encoder::openElement(), point, reverse_index, and ghidra::Encoder::writeSignedInteger().

Referenced by BlockEdge(), ghidra::FlowBlock::decodeBody(), and ghidra::BlockGraph::encodeBody().


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