clang API Documentation

Classes | Public Member Functions
clang::IdentifierResolver Class Reference

#include <IdentifierResolver.h>

List of all members.

Classes

class  IdDeclInfo
class  IdDeclInfoMap
class  iterator

Public Member Functions

iterator begin (DeclarationName Name)
 begin - Returns an iterator for decls with the name 'Name'.
iterator end ()
 end - Returns an iterator that has 'finished'.
bool isDeclInScope (Decl *D, DeclContext *Ctx, Scope *S=nullptr, bool AllowInlineNamespace=false) const
void AddDecl (NamedDecl *D)
 AddDecl - Link the decl to its shadowed decl chain.
void RemoveDecl (NamedDecl *D)
void InsertDeclAfter (iterator Pos, NamedDecl *D)
 Insert the given declaration after the given iterator position.
bool tryAddTopLevelDecl (NamedDecl *D, DeclarationName Name)
 Try to add the given declaration to the top level scope, if it (or a redeclaration of it) hasn't already been added.
 IdentifierResolver (Preprocessor &PP)
 ~IdentifierResolver ()

Detailed Description

IdentifierResolver - Keeps track of shadowed decls on enclosing scopes. It manages the shadowing chains of declaration names and implements efficient decl lookup based on a declaration name.

Definition at line 35 of file IdentifierResolver.h.


Constructor & Destructor Documentation

Definition at line 85 of file IdentifierResolver.cpp.

Definition at line 90 of file IdentifierResolver.cpp.


Member Function Documentation

begin - Returns an iterator for decls with the name 'Name'.

begin - Returns an iterator for decls with name 'Name'.

Definition at line 228 of file IdentifierResolver.cpp.

References end(), clang::DeclarationName::getAsIdentifierInfo(), and clang::DeclarationName::getFETokenInfo().

Referenced by clang::Sema::addImplicitTypedef(), and clang::Sema::Initialize().

end - Returns an iterator that has 'finished'.

Definition at line 145 of file IdentifierResolver.h.

Referenced by clang::Sema::addImplicitTypedef(), begin(), and clang::Sema::Initialize().

bool IdentifierResolver::isDeclInScope ( Decl D,
DeclContext Ctx,
Scope S = nullptr,
bool  AllowInlineNamespace = false 
) const

isDeclInScope - If 'Ctx' is a function/method, isDeclInScope returns true if 'D' is in Scope 'S', otherwise 'S' is ignored and isDeclInScope returns true if 'D' belongs to the given declaration context.

Parameters:
AllowInlineNamespaceIf true, we are checking whether a prior declaration is in scope in a declaration that requires a prior declaration (because it is either explicitly qualified or is a template instantiation or specialization). In this case, a declaration is in scope if it's in the inline namespace set of the context.

isDeclInScope - If 'Ctx' is a function/method, isDeclInScope returns true if 'D' is in Scope 'S', otherwise 'S' is ignored and isDeclInScope returns true if 'D' belongs to the given declaration context.

Definition at line 97 of file IdentifierResolver.cpp.

References clang::Scope::ControlScope, clang::DeclContext::Equals(), clang::Scope::FnTryCatchScope, clang::Decl::getDeclContext(), clang::Scope::getEntity(), clang::Scope::getFlags(), clang::Scope::getParent(), clang::DeclContext::getRedeclContext(), clang::DeclContext::InEnclosingNamespaceSetOf(), clang::Scope::isDeclScope(), clang::DeclContext::isFunctionOrMethod(), clang::Scope::isFunctionPrototypeScope(), and clang::DeclContext::isTransparentContext().

RemoveDecl - Unlink the decl from its shadowed decl chain. The decl must already be part of the decl chain.

Definition at line 207 of file IdentifierResolver.cpp.

References clang::DeclarationName::getAsIdentifierInfo(), clang::NamedDecl::getDeclName(), clang::DeclarationName::getFETokenInfo(), and clang::DeclarationName::setFETokenInfo().

Referenced by clang::Sema::HideUsingShadowDecl(), and InsertDeclAfter().

Try to add the given declaration to the top level scope, if it (or a redeclaration of it) hasn't already been added.

Parameters:
DThe externally-produced declaration to add.
NameThe name of the externally-produced declaration.
Returns:
true if the declaration was added, false otherwise.

Definition at line 293 of file IdentifierResolver.cpp.

References compareDeclarations(), clang::DeclarationName::getAsIdentifierInfo(), clang::Decl::getDeclContext(), clang::DeclarationName::getFETokenInfo(), clang::DeclContext::getRedeclContext(), clang::DeclContext::isTranslationUnit(), and clang::DeclarationName::setFETokenInfo().

Referenced by clang::Sema::DeclareGlobalAllocationFunction().


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