clang API Documentation

Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends
clang::Redeclarable< decl_type > Class Template Reference

Provides common interface for the Decls that can be redeclared. More...

#include <Redeclarable.h>

Inheritance diagram for clang::Redeclarable< decl_type >:
Inheritance graph
[legend]
Collaboration diagram for clang::Redeclarable< decl_type >:
Collaboration graph
[legend]

List of all members.

Classes

class  DeclLink
class  redecl_iterator
 Iterates through all the redeclarations of the same decl. More...

Public Types

typedef llvm::iterator_range
< redecl_iterator
redecl_range

Public Member Functions

 Redeclarable (const ASTContext &Ctx)
decl_type * getPreviousDecl ()
 Return the previous declaration of this declaration or NULL if this is the first declaration.
const decl_type * getPreviousDecl () const
decl_type * getFirstDecl ()
 Return the first declaration of this declaration or itself if this is the only declaration.
const decl_type * getFirstDecl () const
 Return the first declaration of this declaration or itself if this is the only declaration.
bool isFirstDecl () const
 True if this is the first declaration in its redeclaration chain.
decl_type * getMostRecentDecl ()
 Returns the most recent (re)declaration of this declaration.
const decl_type * getMostRecentDecl () const
 Returns the most recent (re)declaration of this declaration.
void setPreviousDecl (decl_type *PrevDecl)
 Set the previous declaration. If PrevDecl is NULL, set this as the first and only declaration.
redecl_range redecls () const
 Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one).
redecl_iterator redecls_begin () const
redecl_iterator redecls_end () const

Protected Member Functions

decl_type * getNextRedeclaration () const

Static Protected Member Functions

static DeclLink PreviousDeclLink (decl_type *D)
static DeclLink LatestDeclLink (const ASTContext &Ctx)

Protected Attributes

DeclLink RedeclLink
 Points to the next redeclaration in the chain.

Friends

class ASTDeclReader
class ASTDeclWriter

Detailed Description

template<typename decl_type>
class clang::Redeclarable< decl_type >

Provides common interface for the Decls that can be redeclared.

Definition at line 26 of file Redeclarable.h.


Member Typedef Documentation

template<typename decl_type>
typedef llvm::iterator_range<redecl_iterator> clang::Redeclarable< decl_type >::redecl_range

Constructor & Destructor Documentation

template<typename decl_type>
clang::Redeclarable< decl_type >::Redeclarable ( const ASTContext Ctx) [inline]

Definition at line 123 of file Redeclarable.h.


Member Function Documentation

template<typename decl_type>
decl_type* clang::Redeclarable< decl_type >::getFirstDecl ( ) [inline]
template<typename decl_type>
const decl_type* clang::Redeclarable< decl_type >::getFirstDecl ( ) const [inline]

Return the first declaration of this declaration or itself if this is the only declaration.

Definition at line 149 of file Redeclarable.h.

template<typename decl_type>
decl_type* clang::Redeclarable< decl_type >::getMostRecentDecl ( ) [inline]
template<typename decl_type>
const decl_type* clang::Redeclarable< decl_type >::getMostRecentDecl ( ) const [inline]

Returns the most recent (re)declaration of this declaration.

Reimplemented in clang::RecordDecl, clang::EnumDecl, clang::ClassTemplateDecl, clang::CXXMethodDecl, and clang::CXXRecordDecl.

Definition at line 165 of file Redeclarable.h.

template<typename decl_type>
decl_type* clang::Redeclarable< decl_type >::getNextRedeclaration ( ) const [inline, protected]

Definition at line 118 of file Redeclarable.h.

Referenced by clang::Redeclarable< VarDecl >::getPreviousDecl().

template<typename decl_type>
decl_type* clang::Redeclarable< decl_type >::getPreviousDecl ( ) [inline]

Return the previous declaration of this declaration or NULL if this is the first declaration.

Reimplemented in clang::RecordDecl, clang::EnumDecl, clang::VarTemplateDecl, clang::TypeAliasTemplateDecl, clang::ClassTemplateDecl, clang::FunctionTemplateDecl, and clang::CXXRecordDecl.

Definition at line 128 of file Redeclarable.h.

Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), clang::Sema::AddInitializerToDecl(), clang::ASTContext::adjustDeducedFunctionResultType(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckCompleteVariableDeclaration(), clang::FunctionDecl::doesDeclarationForceExternallyVisibleDefinition(), dumpPreviousDeclImpl(), clang::RedeclarableTemplateDecl::getCommonPtr(), clang::Redeclarable< VarDecl >::getFirstDecl(), getLVForLocalDecl(), getLVForNamespaceScopeDecl(), clang::Redeclarable< VarDecl >::getPreviousDecl(), clang::ADLResult::insert(), clang::FunctionDecl::isMSExternInline(), clang::Sema::MarkFunctionReferenced(), clang::Sema::MergeCXXFunctionDecl(), redeclForcesDefMSVC(), clang::Sema::SetDeclDeleted(), ShouldWarnAboutMissingPrototype(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::ASTDeclWriter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRedeclarable(), and clang::ASTDeclWriter::VisitVarTemplatePartialSpecializationDecl().

template<typename decl_type>
const decl_type* clang::Redeclarable< decl_type >::getPreviousDecl ( ) const [inline]
template<typename decl_type>
bool clang::Redeclarable< decl_type >::isFirstDecl ( ) const [inline]
template<typename decl_type>
static DeclLink clang::Redeclarable< decl_type >::LatestDeclLink ( const ASTContext Ctx) [inline, static, protected]

Definition at line 101 of file Redeclarable.h.

template<typename decl_type>
static DeclLink clang::Redeclarable< decl_type >::PreviousDeclLink ( decl_type *  D) [inline, static, protected]

Definition at line 97 of file Redeclarable.h.

template<typename decl_type>
redecl_range clang::Redeclarable< decl_type >::redecls ( ) const [inline]
template<typename decl_type>
redecl_iterator clang::Redeclarable< decl_type >::redecls_begin ( ) const [inline]

Definition at line 236 of file Redeclarable.h.

template<typename decl_type>
redecl_iterator clang::Redeclarable< decl_type >::redecls_end ( ) const [inline]

Definition at line 237 of file Redeclarable.h.

template<typename decl_type>
void clang::Redeclarable< decl_type >::setPreviousDecl ( decl_type *  PrevDecl)

Friends And Related Function Documentation

template<typename decl_type>
friend class ASTDeclReader [friend]
template<typename decl_type>
friend class ASTDeclWriter [friend]

Member Data Documentation

template<typename decl_type>
DeclLink clang::Redeclarable< decl_type >::RedeclLink [protected]

Points to the next redeclaration in the chain.

If NextIsPrevious() is true, this is a link to the previous declaration of this same Decl. If NextIsLatest() is true, this is the first declaration and Link points to the latest declaration. For example:

#1 int f(int x, int y = 1); // <pointer to #3, true> #2 int f(int x = 0, int y); // <pointer to #1, false> #3 int f(int x, int y) { return x + y; } // <pointer to #2, false>

If there is only one declaration, it is <pointer to self, true>

Definition at line 116 of file Redeclarable.h.

Referenced by clang::ASTDeclReader::attachLatestDeclImpl(), clang::ASTDeclReader::attachPreviousDeclImpl(), clang::Redeclarable< VarDecl >::getNextRedeclaration(), clang::Redeclarable< VarDecl >::getPreviousDecl(), clang::Redeclarable< VarDecl >::isFirstDecl(), clang::ASTDeclReader::markIncompleteDeclChainImpl(), clang::ASTDeclReader::mergeRedeclarable(), and clang::ASTDeclReader::VisitRedeclarable().


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