![]()  | 
  
    P4C
    
   The P4 Compiler 
   | 
 
This pass generates introspection JSON into user specified file. More...
#include <introspection.h>
Public Member Functions | |
| IntrospectionGenerator (IR::TCPipeline *tcPipeline, P4::ReferenceMap *refMap, P4::TypeMap *typeMap) | |
| std::optional< cstring > | checkValidTcType (const IR::StringLiteral *sl) | 
| void | collectActionInfo (const IR::ActionList *actionlist, struct TableAttributes *tableinfo, const IR::P4Table *p4table, const IR::TCTable *table) | 
| void | collectExternInfo () | 
| void | collectKeyInfo (const IR::Key *k, struct TableAttributes *tableinfo) | 
| void | collectTableInfo () | 
| cstring | externalName (const IR::IDeclaration *declaration) | 
| Util::JsonObject * | genActionInfo (struct ActionAttributes *action) | 
| Util::JsonObject * | genExternInfo (struct ExternAttributes *extn) | 
| void | genExternJson (Util::JsonArray *externJson) | 
| const Util::JsonObject * | genIntrospectionJson () | 
| Util::JsonObject * | genKeyInfo (struct KeyFieldAttributes *keyField) | 
| Util::JsonObject * | genTableInfo (struct TableAttributes *tbl) | 
| void | genTableJson (Util::JsonArray *tablesJson) | 
| void | postorder (const IR::P4Table *t) | 
| bool | serializeIntrospectionJson (std::ostream &destination) | 
  Public Member Functions inherited from Inspector | |
| 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 | 
  Public Member Functions inherited from Visitor | |
| 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>>, 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 | 
Additional Inherited Members | |
  Public Types inherited from Visitor | |
| typedef Visitor_Context | Context | 
  Static Public Member Functions inherited from Visitor | |
| static cstring | demangle (const char *) | 
| static bool | warning_enabled (const Visitor *visitor, int warning_kind) | 
  Public Attributes inherited from Visitor | |
| const Visitor * | called_by = nullptr | 
| cstring | internalName | 
| SplitFlowVisit_base *& | split_link | 
| SplitFlowVisit_base * | split_link_mem = nullptr | 
  Protected Member Functions inherited from Visitor | |
| 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) | 
  Protected Attributes inherited from Visitor | |
| bool | dontForwardChildrenBeforePreorder = false | 
| bool | joinFlows = false | 
| bool | visitDagOnce = true | 
This pass generates introspection JSON into user specified file.