clang 19.0.0git
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
clang::Redeclarable< decl_type > Class Template Reference

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

#include "clang/AST/Redeclarable.h"

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

Classes

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

Public Types

using redecl_range = llvm::iterator_range< redecl_iterator >
 

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.
 
redecl_range redecls () const
 Returns an iterator range for all the redeclarations of the same decl.
 
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.
 
decl_type * First
 

Friends

class ASTDeclReader
 
class ASTDeclWriter
 
class IncrementalParser
 

Detailed Description

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

Provides common interface for the Decls that can be redeclared.

Definition at line 84 of file Redeclarable.h.

Member Typedef Documentation

◆ redecl_range

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

Definition at line 292 of file Redeclarable.h.

Constructor & Destructor Documentation

◆ Redeclarable()

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

Definition at line 198 of file Redeclarable.h.

Member Function Documentation

◆ getFirstDecl() [1/2]

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

◆ getFirstDecl() [2/2]

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 220 of file Redeclarable.h.

References clang::Redeclarable< decl_type >::First.

◆ getMostRecentDecl() [1/2]

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

◆ getMostRecentDecl() [2/2]

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

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

Definition at line 231 of file Redeclarable.h.

References clang::Redeclarable< decl_type >::getFirstDecl().

◆ getNextRedeclaration()

template<typename decl_type >
decl_type * clang::Redeclarable< decl_type >::getNextRedeclaration ( ) const
inlineprotected

◆ getPreviousDecl() [1/2]

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.

Definition at line 204 of file Redeclarable.h.

References clang::Redeclarable< decl_type >::getNextRedeclaration(), clang::Redeclarable< decl_type >::DeclLink::isFirst(), and clang::Redeclarable< decl_type >::RedeclLink.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnOpenMPCall(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), clang::ASTContext::adjustDeducedFunctionResultType(), clang::ASTDeclReader::attachPreviousDeclImpl(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::DeduceVariableDeclarationType(), clang::FunctionDecl::doesDeclarationForceExternallyVisibleDefinition(), dumpPreviousDeclImpl(), clang::CodeGen::CGOpenMPRuntime::emitDeclareSimdFunction(), FindPossiblePrototype(), clang::RedeclarableTemplateDecl::getCommonPtr(), clang::FunctionDecl::isMSExternInline(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeVarDeclTypes(), OnlyHasInlineBuiltinDeclaration(), PreviousDeclsHaveMultiVersionAttribute(), redeclForcesDefMSVC(), clang::Sema::SetDeclDeleted(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTNodeImporter::VisitFunctionTemplateDecl(), clang::ASTDeclWriter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRedeclarable(), clang::ASTNodeImporter::VisitVarTemplateDecl(), and clang::ASTDeclWriter::VisitVarTemplatePartialSpecializationDecl().

◆ getPreviousDecl() [2/2]

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

Definition at line 209 of file Redeclarable.h.

◆ isFirstDecl()

template<typename decl_type >
bool clang::Redeclarable< decl_type >::isFirstDecl ( ) const
inline

◆ LatestDeclLink()

template<typename decl_type >
static DeclLink clang::Redeclarable< decl_type >::LatestDeclLink ( const ASTContext Ctx)
inlinestaticprotected

◆ PreviousDeclLink()

template<typename decl_type >
static DeclLink clang::Redeclarable< decl_type >::PreviousDeclLink ( decl_type *  D)
inlinestaticprotected

◆ redecls()

template<typename decl_type >
redecl_range clang::Redeclarable< decl_type >::redecls ( ) const
inline

◆ redecls_begin()

template<typename decl_type >
redecl_iterator clang::Redeclarable< decl_type >::redecls_begin ( ) const
inline

Definition at line 302 of file Redeclarable.h.

References clang::Redeclarable< decl_type >::redecls().

◆ redecls_end()

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

◆ setPreviousDecl()

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

Friends And Related Function Documentation

◆ ASTDeclReader

template<typename decl_type >
friend class ASTDeclReader
friend

Definition at line 194 of file Redeclarable.h.

◆ ASTDeclWriter

template<typename decl_type >
friend class ASTDeclWriter
friend

Definition at line 195 of file Redeclarable.h.

◆ IncrementalParser

template<typename decl_type >
friend class IncrementalParser
friend

Definition at line 196 of file Redeclarable.h.

Member Data Documentation

◆ First

template<typename decl_type >
decl_type* clang::Redeclarable< decl_type >::First
protected

◆ RedeclLink

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

Points to the next redeclaration in the chain.

If isFirst() is false, this is a link to the previous declaration of this same Decl. If isFirst() 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 185 of file Redeclarable.h.

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


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