Visitor mixin for looking up names in enclosing scopes from the Visitor::Context.
More...
#include <resolveReferences.h>
Inherits P4::Visitor, and P4::DeclarationLookup.
Inherited by P4::AbstractInliner< ActionsInlineList, AInlineWorkList >, P4::AbstractInliner< FunctionsInlineList, FunctionsInlineWorkList >, P4::AbstractInliner< InlineList, InlineSummary >, P4::AbstractInliner< P4::InlineList, InlineWorkList >, BFN::ControlFlowVisitor [virtual]
, ComputeDefUse, ComputeDefUse::SetupJoinPoints, P4::AbstractInliner< InlineList, InlineWorkList >, P4::CheckExternInvocationCommon, P4::CollectUsedDeclarations [private]
, P4::ComputeDefUse, P4::ComputeDefUse::SetupJoinPoints, P4::ComputeParserCG, P4::ConstantTypeSubstitution [private]
, P4::CreateStructInitializers, P4::Deprecated, P4::DiscoverActionsInlining, P4::DiscoverFunctionsInlining, P4::DoCheckConstants, P4::DoCheckCoreMethods, P4::DoConstantFolding, P4::DoDefaultArguments, P4::DoExpandEmit, P4::DoExpandLookahead, P4::DoLocalCopyPropagation [private]
, P4::DoOrderArguments, P4::DoRemoveAssertAssume, P4::DoRemoveExits, P4::DoRemoveMiss, P4::DoReplaceTypedef, P4::DoSimplifyControlFlow, P4::DoSimplifyExpressions, P4::DoStaticAssert, P4::DoTableHit, P4::DontcareArgs, P4::EliminateSubparserCalls, P4::EntryPriorities, P4::FindActionParameters, P4::FindFunctionSpecializations, P4::FindGlobalActionUses, P4::FindRepeatedActionUses, P4::FindSpecializations, P4::FunctionsInliner::isLocalExpression [private]
, P4::HasTableApply, P4::InstantiateDirectCalls, P4::IsValid, P4::KeySideEffect, P4::LocalizeActions, P4::MoveInitializers, P4::P4Fmt::P4Formatter [private]
, P4::P4Tools::P4ProgramDCGCreator [private]
, P4::ReadsWrites, P4::RemoveComplexExpressions, P4::RemoveNestedStructs, P4::RemoveUnusedDeclarations [private]
, P4::RenameSymbols, P4::ReplaceStructs [private]
, P4::ResolveReferences [private]
, P4::SubstituteParameters, P4::ToP4 [private]
, P4::TypeInferenceBase, P4::UnrollLoops, P4::hasSideEffects, and TableMutex.
|
const IR::IDeclaration * | getDeclaration (const IR::Path *path, bool notNull=false) const |
|
const IR::IDeclaration * | getDeclaration (const IR::This *, bool notNull=false) const |
|
auto | getDeclarations (const IR::INamespace *ns) const |
| Returns the set of decls that exist in the given namespace.
|
|
auto | getDeclsByName (const IR::INamespace *ns, cstring name) const |
| Returns the set of decls with the given name that exist in the given namespace.
|
|
std::vector< const IR::IDeclaration * > | resolve (const IR::ID &name, ResolutionType type) const |
| Resolve references for name , restricted to type declarations.
|
|
virtual const IR::IDeclaration * | resolvePath (const IR::Path *path, bool isType) const |
|
const IR::Type * | resolveType (const IR::Type *type) const |
| Resolve a refrence to a type type .
|
|
const IR::IDeclaration * | resolveUnique (const IR::ID &name, ResolutionType type, const IR::INamespace *=nullptr) const |
| Resolve reference for name , restricted to type declarations, and expect one result.
|
|
virtual const IR::Node * | apply_visitor (const IR::Node *n, const char *name=0)=0 |
|
virtual bool | check_clone (const Visitor *a) |
|
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 |
|
virtual profile_t | init_apply (const IR::Node *root) |
|
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 |
|
|
bool | anyOrder = false |
|
bool | dontForwardChildrenBeforePreorder = false |
|
bool | joinFlows = false |
|
bool | visitDagOnce = true |
|
Visitor mixin for looking up names in enclosing scopes from the Visitor::Context.
◆ getDeclaration() [1/2]
const IR::IDeclaration * P4::ResolutionContext::getDeclaration |
( |
const IR::Path * | path, |
|
|
bool | notNull = false ) const |
|
virtual |
◆ getDeclaration() [2/2]
const IR::IDeclaration * P4::ResolutionContext::getDeclaration |
( |
const IR::This * | pointer, |
|
|
bool | notNull = false ) const |
|
virtual |
◆ resolvePath()
const IR::IDeclaration * P4::ResolutionContext::resolvePath |
( |
const IR::Path * | path, |
|
|
bool | isType ) const |
|
virtual |
Resolve path
; if isType
is true
then resolution will only return type nodes.