retdec
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | List of all members
retdec::llvmir2hll::GraphvizCFGWriter Class Reference

A CFG writer in the dot format (graphviz). More...

#include <graphviz_cfg_writer.h>

Inheritance diagram for retdec::llvmir2hll::GraphvizCFGWriter:
Inheritance graph
[legend]
Collaboration diagram for retdec::llvmir2hll::GraphvizCFGWriter:
Collaboration graph
[legend]

Public Member Functions

virtual std::string getId () const override
 Returns the ID of the writer. More...
 
virtual bool emitCFG () override
 Emits the given CFG into the given output stream. More...
 
- Public Member Functions inherited from retdec::llvmir2hll::CFGWriter
virtual ~CFGWriter ()=default
 

Static Public Member Functions

static ShPtr< CFGWritercreate (ShPtr< CFG > cfg, std::ostream &out)
 Creates a new graphviz CFG writer. More...
 

Private Types

using NodeSet = std::set< ShPtr< CFG::Node > >
 Set of nodes. More...
 

Private Member Functions

 GraphvizCFGWriter (ShPtr< CFG > cfg, std::ostream &out)
 Constructs a new graphviz CFG writer. More...
 
void emitNodesByBreathFirstTraversal (ShPtr< CFG::Node > startNode, NodeSet &emittedNodes)
 Emits nodes starting from startNode by using a breadth-first traversal. More...
 
void emitNode (ShPtr< CFG::Node > node)
 Emits the given node to out. More...
 
void emitEdge (ShPtr< CFG::Edge > edge)
 Emits the given edge to out. More...
 
void emitStmt (ShPtr< Statement > stmt)
 Emits the given statement to out. More...
 

Additional Inherited Members

- Protected Types inherited from retdec::llvmir2hll::CFGWriter
using NodeLabelMapping = std::map< ShPtr< CFG::Node >, std::string >
 Mapping between a node and its label. More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::CFGWriter
 CFGWriter (ShPtr< CFG > cfg, std::ostream &out)
 Constructs a new writer. More...
 
- Protected Attributes inherited from retdec::llvmir2hll::CFGWriter
ShPtr< CFGcfg
 CFG to be emitted. More...
 
std::ostream & out
 Stream, where the resulting CFG will be emitted. More...
 

Detailed Description

A CFG writer in the dot format (graphviz).

For more information on the dot format, see http://www.graphviz.org/.

Use create() to create instances. Instances of this class have reference object semantics.

Member Typedef Documentation

◆ NodeSet

Set of nodes.

Constructor & Destructor Documentation

◆ GraphvizCFGWriter()

retdec::llvmir2hll::GraphvizCFGWriter::GraphvizCFGWriter ( ShPtr< CFG cfg,
std::ostream &  out 
)
private

Constructs a new graphviz CFG writer.

See create() for the description of parameters.

Member Function Documentation

◆ create()

ShPtr< CFGWriter > retdec::llvmir2hll::GraphvizCFGWriter::create ( ShPtr< CFG cfg,
std::ostream &  out 
)
static

Creates a new graphviz CFG writer.

Parameters
[in]cfgCFG to be emitted.
[in]outOutput stream into which the CFG will be emitted.

◆ emitCFG()

bool retdec::llvmir2hll::GraphvizCFGWriter::emitCFG ( )
overridevirtual

Emits the given CFG into the given output stream.

The format of the written data depends on the subclass of this class.

Returns
true if some code has been emitted, false otherwise.

Implements retdec::llvmir2hll::CFGWriter.

◆ emitEdge()

void retdec::llvmir2hll::GraphvizCFGWriter::emitEdge ( ShPtr< CFG::Edge edge)
private

Emits the given edge to out.

◆ emitNode()

void retdec::llvmir2hll::GraphvizCFGWriter::emitNode ( ShPtr< CFG::Node node)
private

Emits the given node to out.

◆ emitNodesByBreathFirstTraversal()

void retdec::llvmir2hll::GraphvizCFGWriter::emitNodesByBreathFirstTraversal ( ShPtr< CFG::Node startNode,
NodeSet emittedNodes 
)
private

Emits nodes starting from startNode by using a breadth-first traversal.

Emitted nodes are inserted into emittedNodes. If a node is already in emittedNodes, it is not emitted.

◆ emitStmt()

void retdec::llvmir2hll::GraphvizCFGWriter::emitStmt ( ShPtr< Statement stmt)
private

Emits the given statement to out.

◆ getId()

std::string retdec::llvmir2hll::GraphvizCFGWriter::getId ( ) const
overridevirtual

Returns the ID of the writer.

Implements retdec::llvmir2hll::CFGWriter.


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