15 #ifndef LLVM_CLANG_SEMA_IDENTIFIERRESOLVER_H
16 #define LLVM_CLANG_SEMA_IDENTIFIERRESOLVER_H
19 #include "llvm/ADT/SmallVector.h"
26 class DeclarationName;
27 class ExternalPreprocessorSource;
45 inline DeclsTy::iterator decls_begin() {
return Decls.begin(); }
46 inline DeclsTy::iterator decls_end() {
return Decls.end(); }
55 void InsertDecl(DeclsTy::iterator Pos,
NamedDecl *D) {
81 typedef IdDeclInfo::DeclsTy::iterator
BaseIter;
86 assert((
Ptr & 0x1) == 0 &&
"Invalid Ptr!");
97 assert(
isIterator() &&
"Ptr not an iterator!");
150 bool AllowInlineNamespace =
false)
const;
181 IdDeclInfoMap *IdDeclInfos;
187 static inline bool isDeclPtr(
void *Ptr) {
188 return (reinterpret_cast<uintptr_t>(Ptr) & 0x1) == 0;
192 static inline IdDeclInfo *toIdDeclInfo(
void *Ptr) {
193 assert((reinterpret_cast<uintptr_t>(Ptr) & 0x1) == 1
194 &&
"Ptr not a IdDeclInfo* !");
195 return reinterpret_cast<IdDeclInfo*
>(
iterator(NamedDecl *D)
A single NamedDecl. (Ptr & 0x1 == 0)
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...
Decl - This represents one declaration (or definition), e.g.
The l-value was an access to a declared entity or something equivalently strong, like the address of ...
iterator begin(DeclarationName Name)
begin - Returns an iterator for decls with the name 'Name'.
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 end()
end - Returns an iterator that has 'finished'.
bool operator!=(const iterator &RHS) const
void RemoveDecl(NamedDecl *D)
RemoveDecl - Unlink the decl from its shadowed decl chain.
Scope - A scope is a transient data structure that is used while parsing the program.
NamedDecl * operator*() const
detail::InMemoryDirectory::const_iterator I
IdentifierResolver - Keeps track of shadowed decls on enclosing scopes.
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
BaseIter getIterator() const
__PTRDIFF_TYPE__ ptrdiff_t
A signed integer type that is the result of subtracting two pointers.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
IdentifierResolver(Preprocessor &PP)
DeclarationName - The name of a declaration.
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'...
void InsertDeclAfter(iterator Pos, NamedDecl *D)
Insert the given declaration after the given iterator position.
void AddDecl(NamedDecl *D)
AddDecl - Link the decl to its shadowed decl chain.
iterator(BaseIter I)
A IdDeclInfo::DeclsTy::iterator that walks or not the parent declaration contexts depending on 'LookI...
uintptr_t Ptr
Ptr - There are 2 forms that 'Ptr' represents: 1) A single NamedDecl.
std::input_iterator_tag iterator_category
bool operator==(const iterator &RHS) const
IdDeclInfo::DeclsTy::iterator BaseIter
std::ptrdiff_t difference_type
NamedDecl - This represents a decl with a name.
iterator - Iterate over the decls of a specified declaration name.
Engages in a tight little dance with the lexer to efficiently preprocess tokens.