clang API Documentation

Public Types | Public Member Functions | Static Public Member Functions
clang::LocalInstantiationScope Class Reference

A stack-allocated class that identifies which local variable declaration instantiations are present in this scope. More...

#include <Template.h>

List of all members.

Public Types

typedef SmallVector< Decl *, 4 > DeclArgumentPack
 A set of declarations.

Public Member Functions

 LocalInstantiationScope (Sema &SemaRef, bool CombineWithOuterScope=false)
 ~LocalInstantiationScope ()
const SemagetSema () const
void Exit ()
 Exit this local instantiation scope early.
LocalInstantiationScopecloneScopes (LocalInstantiationScope *Outermost)
 Clone this scope, and all outer scopes, down to the given outermost scope.
llvm::PointerUnion< Decl
*, DeclArgumentPack * > * 
findInstantiationOf (const Decl *D)
 Find the instantiation of the declaration D within the current instantiation scope.
void InstantiatedLocal (const Decl *D, Decl *Inst)
void InstantiatedLocalPackArg (const Decl *D, Decl *Inst)
void MakeInstantiatedLocalArgPack (const Decl *D)
void SetPartiallySubstitutedPack (NamedDecl *Pack, const TemplateArgument *ExplicitArgs, unsigned NumExplicitArgs)
 Note that the given parameter pack has been partially substituted via explicit specification of template arguments (C++0x [temp.arg.explicit]p9).
void ResetPartiallySubstitutedPack ()
 Reset the partially-substituted pack when it is no longer of interest.
NamedDeclgetPartiallySubstitutedPack (const TemplateArgument **ExplicitArgs=nullptr, unsigned *NumExplicitArgs=nullptr) const
 Retrieve the partially-substitued template parameter pack.

Static Public Member Functions

static void deleteScopes (LocalInstantiationScope *Scope, LocalInstantiationScope *Outermost)
 deletes the given scope, and all otuer scopes, down to the given outermost scope.

Detailed Description

A stack-allocated class that identifies which local variable declaration instantiations are present in this scope.

A new instance of this class type will be created whenever we instantiate a new function declaration, which will have its own set of parameter declarations.

Definition at line 178 of file Template.h.


Member Typedef Documentation

A set of declarations.

Definition at line 181 of file Template.h.


Constructor & Destructor Documentation

clang::LocalInstantiationScope::LocalInstantiationScope ( Sema SemaRef,
bool  CombineWithOuterScope = false 
) [inline]

Definition at line 246 of file Template.h.

Definition at line 254 of file Template.h.

References Exit().


Member Function Documentation

Clone this scope, and all outer scopes, down to the given outermost scope.

Definition at line 274 of file Template.h.

References cloneScopes().

Referenced by cloneScopes(), and clang::Sema::InstantiateAttrs().

static void clang::LocalInstantiationScope::deleteScopes ( LocalInstantiationScope Scope,
LocalInstantiationScope Outermost 
) [inline, static]

deletes the given scope, and all otuer scopes, down to the given outermost scope.

Definition at line 307 of file Template.h.

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

Exit this local instantiation scope early.

Definition at line 261 of file Template.h.

References clang::Sema::CurrentInstantiationScope.

Referenced by clang::Sema::InstantiateFunctionDefinition(), clang::Sema::InstantiateVariableDefinition(), and ~LocalInstantiationScope().

Find the instantiation of the declaration D within the current instantiation scope.

Parameters:
DThe declaration whose instantiation we are searching for.
Returns:
A pointer to the declaration or argument pack of declarations to which the declaration D is instantiated, if found. Otherwise, returns NULL.

Definition at line 2779 of file SemaTemplateInstantiate.cpp.

References Current, getCanonicalParmVarDecl(), and clang::Decl::getPreviousDecl().

Referenced by clang::Sema::CheckParameterPacksForExpansion(), clang::Sema::FindInstantiatedDecl(), and clang::Sema::getNumArgumentsInExpansion().

NamedDecl * LocalInstantiationScope::getPartiallySubstitutedPack ( const TemplateArgument **  ExplicitArgs = nullptr,
unsigned NumExplicitArgs = nullptr 
) const

Retrieve the partially-substitued template parameter pack.

If there is no partially-substituted parameter pack, returns NULL.

Definition at line 2857 of file SemaTemplateInstantiate.cpp.

References Current.

Referenced by clang::Sema::CheckParameterPacksForExpansion(), and PackDeductionScope::PackDeductionScope().

const Sema& clang::LocalInstantiationScope::getSema ( ) const [inline]

Definition at line 258 of file Template.h.

void LocalInstantiationScope::InstantiatedLocal ( const Decl D,
Decl Inst 
)

Reset the partially-substituted pack when it is no longer of interest.

Definition at line 349 of file Template.h.

void LocalInstantiationScope::SetPartiallySubstitutedPack ( NamedDecl Pack,
const TemplateArgument ExplicitArgs,
unsigned  NumExplicitArgs 
)

Note that the given parameter pack has been partially substituted via explicit specification of template arguments (C++0x [temp.arg.explicit]p9).

Parameters:
PackThe parameter pack, which will always be a template parameter pack.
ExplicitArgsThe explicitly-specified template arguments provided for this parameter pack.
NumExplicitArgsThe number of explicitly-specified template arguments provided for this parameter pack.

Definition at line 2844 of file SemaTemplateInstantiate.cpp.


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