![]()  | 
  
    P4C
    
   The P4 Compiler 
   | 
 
#include <controlFlowGraph.h>
Classes | |
| class | DummyNode | 
| class | Edge | 
| A CFG Edge; can be an in-edge or out-edge.  More... | |
| class | EdgeSet | 
| class | IfNode | 
| class | Node | 
| class | TableNode | 
Public Member Functions | |
| void | build (const IR::P4Control *cc, P4::ReferenceMap *refMap, P4::TypeMap *typeMap) | 
| bool | checkImplementable () const | 
| void | computeSuccessors () | 
| void | dbprint (std::ostream &out) const | 
| void | dbprint (std::ostream &out, Node *node, std::set< Node * > &done) const | 
| Node * | makeNode (const IR::IfStatement *statement) | 
| Node * | makeNode (const IR::P4Table *table, const IR::Expression *invocation) | 
| Node * | makeNode (cstring name) | 
| void | setEntry (Node *entry) | 
  Public Member Functions inherited from IHasDbPrint | |
| void | print () const | 
Public Attributes | |
| ordered_set< Node * > | allNodes | 
| const IR::P4Control * | container | 
| Node * | entryPoint | 
| Node * | exitPoint | 
Protected Types | |
| enum class | EdgeType { Unconditional , True , False , Label } | 
This CFG models the BMV2 notion of control-flow graph. In BMv2 there are only 2 types of nodes: If and Table.
| bool BMV2::CFG::checkImplementable | ( | ) | const | 
BMv2 is very restricted in the kinds of graphs it supports. Thie method checks whether a CFG is implementable.
      
  | 
  virtual | 
Implements IHasDbPrint.