|
| Graph_visitor (std::filesystem::path graphsDir, const bool graphs, const bool fullGraph, const bool jsonOut, std::filesystem::path filename) |
|
const char * | getPrevType (const PrevType &prev_type) |
| Maps PrevType to string.
|
|
const char * | getType (const VertexType &v_type) |
| Maps VertexType to string.
|
|
void | process (std::vector< Graph * > &controlGraphsArray, std::vector< Graph * > &parserGraphsArray) |
|
void | writeGraphToFile (const Graph &g, const std::string &name) |
|
vertex_t | add_and_connect_vertex (const cstring &name, VertexType type) |
|
void | add_edge (const vertex_t &from, const vertex_t &to, const cstring &name) |
|
void | add_edge (const vertex_t &from, const vertex_t &to, const cstring &name, unsigned cluster_id) |
|
vertex_t | add_vertex (const cstring &name, VertexType type) |
|
std::optional< vertex_t > | merge_other_statements_into_vertex () |
|
const IR::Node * | apply_visitor (const IR::Node *, const char *name=0) override |
|
profile_t | init_apply (const IR::Node *root) override |
|
virtual void | loop_revisit (const IR::Node *) |
|
virtual void | postorder (const IR::Node *) |
|
virtual bool | preorder (const IR::Node *) |
|
virtual void | revisit (const IR::Node *) |
|
void | revisit_visited () |
|
bool | visit_in_progress (const IR::Node *n) const |
|
void | visitAgain () const override |
|
void | visitOnce () const override |
|
virtual bool | check_global (cstring) |
|
virtual void | clear_globals () |
|
virtual Visitor * | clone () const |
|
virtual ControlFlowVisitor * | controlFlowVisitor () |
|
virtual void | end_apply () |
|
virtual void | end_apply (const IR::Node *root) |
|
virtual void | erase_global (cstring) |
|
template<class T > |
const T * | findContext () const |
|
template<class T > |
const T * | findContext (const Context *&c) const |
|
template<class T > |
const T * | findOrigCtxt () const |
|
template<class T > |
const T * | findOrigCtxt (const Context *&c) const |
|
virtual Visitor & | flow_clone () |
|
virtual void | flow_merge (Visitor &) |
|
virtual bool | flow_merge_closure (Visitor &) |
|
virtual void | flow_merge_global_from (cstring) |
|
virtual void | flow_merge_global_to (cstring) |
|
const Context * | getChildContext () const |
|
int | getChildrenVisited () const |
|
const Context * | getContext () const |
|
int | getContextDepth () const |
|
const IR::Node * | getCurrentNode () const |
|
template<class T > |
const T * | getCurrentNode () const |
|
const IR::Node * | getOriginal () const |
|
template<class T > |
const T * | getOriginal () const |
|
template<class T > |
const T * | getParent () const |
|
virtual bool | has_flow_joins () const |
|
profile_t | init_apply (const IR::Node *root, const Context *parent_context) |
|
bool | isInContext (const IR::Node *n) const |
|
virtual const char * | name () const |
|
template<class T > |
void | parallel_visit (const IR::Vector< T > &v, const char *name, int cidx) |
|
template<class T > |
void | parallel_visit (const IR::Vector< T > &v, const char *name=0) |
|
template<class T > |
void | parallel_visit (IR::Vector< T > &v, const char *name, int cidx) |
|
template<class T > |
void | parallel_visit (IR::Vector< T > &v, const char *name=0) |
|
void | print_context () const |
|
const Visitor & | setCalledBy (const Visitor *visitor) |
|
void | setName (const char *name) |
|
void | visit (const IR::Node &n, const char *name, int cidx) |
|
void | visit (const IR::Node &n, const char *name=0) |
|
void | visit (const IR::Node *&n, const char *name, int cidx) |
|
void | visit (const IR::Node *&n, const char *name=0) |
|
void | visit (const IR::Node *const &n, const char *name, int cidx) |
|
void | visit (const IR::Node *const &n, const char *name=0) |
|
void | visit (IR::Node &n, const char *name, int cidx) |
|
void | visit (IR::Node &n, const char *name=0) |
|
void | visit (IR::Node *&, const char *=0, int=0) |
|
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T> && !std::is_pointer_v<T>>, class... Args> |
void | warn (const int kind, const char *format, const T &node, Args &&...args) |
| The const ref variant of the above.
|
|
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T>>, class... Args> |
void | warn (const int kind, const char *format, const T *node, Args &&...args) |
|
bool | warning_enabled (int warning_kind) const |
|
|
using | edgeProperties |
|
using | Graph = boost::subgraph<Graph_> |
|
using | Graph_ |
|
using | graphProperties |
|
using | GraphvizAttributes = std::map<cstring, cstring> |
|
using | Parents = std::vector<std::pair<vertex_t, EdgeTypeIface *>> |
|
using | vertex_t = boost::graph_traits<Graph>::vertex_descriptor |
|
using | vertexProperties = boost::property<boost::vertex_attribute_t, GraphvizAttributes, Vertex> |
|
enum class | VertexType {
TABLE
, KEY
, ACTION
, CONDITION
,
SWITCH
, STATEMENTS
, CONTROL
, OTHER
,
STATE
, EMPTY
} |
|
typedef Visitor_Context | Context |
|
static cstring | demangle (const char *) |
|
static bool | warning_enabled (const Visitor *visitor, int warning_kind) |
|
const Visitor * | called_by = nullptr |
|
cstring | internalName |
|
SplitFlowVisit_base *& | split_link |
|
SplitFlowVisit_base * | split_link_mem = nullptr |
|
virtual void | init_join_flows (const IR::Node *) |
|
virtual bool | join_flows (const IR::Node *) |
|
virtual void | post_join_flows (const IR::Node *, const IR::Node *) |
|
void | visit_children (const IR::Node *, std::function< void()> fn) |
|
vertex_t | exit_v {} |
|
Graph * | g {nullptr} |
|
Parents | parents {} |
|
vertex_t | start_v {} |
|
std::vector< const IR::Statement * > | statementsStack {} |
|
bool | dontForwardChildrenBeforePreorder = false |
|
bool | joinFlows = false |
|
bool | visitDagOnce = true |
|
"process" function of class is dependent on previous aplication of visitor classes Controls and Parsers onto IR, and can only be run after them.