Go to the documentation of this file.
14 #ifndef LLVM_CLANG_SEMA_IDENTIFIERRESOLVER_H
15 #define LLVM_CLANG_SEMA_IDENTIFIERRESOLVER_H
18 #include "llvm/ADT/SmallVector.h"
27 class DeclarationName;
47 DeclsTy::iterator decls_begin() {
return Decls.begin(); }
48 DeclsTy::iterator decls_end() {
return Decls.end(); }
57 void InsertDecl(DeclsTy::iterator Pos,
NamedDecl *D) {
84 using BaseIter = IdDeclInfo::DeclsTy::iterator;
89 assert((
Ptr & 0x1) == 0 &&
"Invalid Ptr!");
101 assert(
isIterator() &&
"Ptr not an iterator!");
156 bool AllowInlineNamespace =
false)
const;
184 IdDeclInfoMap *IdDeclInfos;
190 static inline bool isDeclPtr(
void *Ptr) {
191 return (
reinterpret_cast<uintptr_t>(Ptr) & 0x1) == 0;
195 static inline IdDeclInfo *toIdDeclInfo(
void *Ptr) {
196 assert((
reinterpret_cast<uintptr_t>(Ptr) & 0x1) == 1
197 &&
"Ptr not a IdDeclInfo* !");
198 return reinterpret_cast<IdDeclInfo*
>(
199 reinterpret_cast<uintptr_t>(Ptr) & ~0x1);
205 #endif // LLVM_CLANG_SEMA_IDENTIFIERRESOLVER_H
void AddDecl(NamedDecl *D)
AddDecl - Link the decl to its shadowed decl chain.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
iterator begin(DeclarationName Name)
begin - Returns an iterator for decls with the name 'Name'.
This represents a decl that may have a name.
void InsertDeclAfter(iterator Pos, NamedDecl *D)
Insert the given declaration after the given iterator position.
IdDeclInfo::DeclsTy::iterator BaseIter
std::input_iterator_tag iterator_category
void RemoveDecl(NamedDecl *D)
RemoveDecl - Unlink the decl from its shadowed decl chain.
The name of a declaration.
@ Decl
The l-value was an access to a declared entity or something equivalently strong, like the address of ...
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 alre...
bool 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',...
std::ptrdiff_t difference_type
Scope - A scope is a transient data structure that is used while parsing the program.
BaseIter getIterator() const
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
bool operator!=(const iterator &RHS) const
IdentifierResolver - Keeps track of shadowed decls on enclosing scopes.
iterator end()
end - Returns an iterator that has 'finished'.
uintptr_t Ptr
Ptr - There are 2 forms that 'Ptr' represents: 1) A single NamedDecl.
Decl - This represents one declaration (or definition), e.g.
iterator(BaseIter I)
A IdDeclInfo::DeclsTy::iterator that walks or not the parent declaration contexts depending on 'LookI...
One of these records is kept for each identifier that is lexed.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
iterator(NamedDecl *D)
A single NamedDecl. (Ptr & 0x1 == 0)
__PTRDIFF_TYPE__ ptrdiff_t
A signed integer type that is the result of subtracting two pointers.
bool operator==(const iterator &RHS) const
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
iterator - Iterate over the decls of a specified declaration name.
IdentifierResolver(Preprocessor &PP)
NamedDecl * operator*() const