decompiler 1.0.0
Public Member Functions | Public Attributes | List of all members
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 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 ATTRIB_END, ATTRIB_REV, Decoder::closeElement(), ELEM_EDGE, BlockMap::findLevelBlock(), label, Decoder::openElement(), point, Decoder::readSignedInteger(), and reverse_index.

Referenced by FlowBlock::decodeNextInEdge().

◆ encode()

void 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 ATTRIB_END, ATTRIB_REV, Encoder::closeElement(), ELEM_EDGE, FlowBlock::getIndex(), Encoder::openElement(), point, reverse_index, and Encoder::writeSignedInteger().


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