clang  3.9.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
clang::LocalInstantiationScope Class Reference

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

#include <Template.h>

Public Types

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

Public Member Functions

 LocalInstantiationScope (Sema &SemaRef, bool CombineWithOuterScope=false)
 
 ~LocalInstantiationScope ()
 
const SemagetSema () const
 
void Exit ()
 Exit this local instantiation scope early. More...
 
LocalInstantiationScopecloneScopes (LocalInstantiationScope *Outermost)
 Clone this scope, and all outer scopes, down to the given outermost scope. More...
 
llvm::PointerUnion< Decl
*, DeclArgumentPack * > * 
findInstantiationOf (const Decl *D)
 Find the instantiation of the declaration D within the current instantiation scope. More...
 
void InstantiatedLocal (const Decl *D, Decl *Inst)
 
void InstantiatedLocalPackArg (const Decl *D, ParmVarDecl *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). More...
 
void ResetPartiallySubstitutedPack ()
 Reset the partially-substituted pack when it is no longer of interest. More...
 
NamedDeclgetPartiallySubstitutedPack (const TemplateArgument **ExplicitArgs=nullptr, unsigned *NumExplicitArgs=nullptr) const
 Retrieve the partially-substitued template parameter pack. More...
 

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. More...
 

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.

References clang::Sema::CurrentInstantiationScope.

clang::LocalInstantiationScope::~LocalInstantiationScope ( )
inline

Definition at line 254 of file Template.h.

References Exit().

Member Function Documentation

LocalInstantiationScope* clang::LocalInstantiationScope::cloneScopes ( LocalInstantiationScope Outermost)
inline

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

Definition at line 274 of file Template.h.

References cloneScopes(), clang::Sema::CurrentInstantiationScope, E, and I.

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

static void clang::LocalInstantiationScope::deleteScopes ( LocalInstantiationScope Scope,
LocalInstantiationScope Outermost 
)
inlinestatic

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

Definition at line 314 of file Template.h.

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

void clang::LocalInstantiationScope::Exit ( )
inline

Exit this local instantiation scope early.

Definition at line 261 of file Template.h.

References clang::Sema::CurrentInstantiationScope, and I.

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

llvm::PointerUnion< Decl *, LocalInstantiationScope::DeclArgumentPack * > * LocalInstantiationScope::findInstantiationOf ( const Decl D)

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 2765 of file SemaTemplateInstantiate.cpp.

References Current, getCanonicalParmVarDecl(), and clang::if().

Referenced by clang::Sema::CheckParameterPacksForExpansion(), 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 2870 of file SemaTemplateInstantiate.cpp.

References Current.

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

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

Definition at line 258 of file Template.h.

void LocalInstantiationScope::InstantiatedLocal ( const Decl D,
Decl Inst 
)
void LocalInstantiationScope::InstantiatedLocalPackArg ( const Decl D,
ParmVarDecl Inst 
)
void LocalInstantiationScope::MakeInstantiatedLocalArgPack ( const Decl D)
void clang::LocalInstantiationScope::ResetPartiallySubstitutedPack ( )
inline

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

Definition at line 356 of file Template.h.

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

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 2857 of file SemaTemplateInstantiate.cpp.

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


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