TemplateMixin

Constructors

this
this(Loc loc, Identifier ident, TypeQualified tqual, Objects* tiargs)
Undocumented in source.

Members

Functions

accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
findTempDecl
bool findTempDecl(Scope* sc)
Undocumented in source. Be warned that the author may not have intended to support it.
hasPointers
bool hasPointers()
Undocumented in source. Be warned that the author may not have intended to support it.
isTemplateMixin
inout(TemplateMixin) isTemplateMixin()
Undocumented in source. Be warned that the author may not have intended to support it.
kind
const(char)* kind()
Undocumented in source. Be warned that the author may not have intended to support it.
oneMember
bool oneMember(Dsymbol* ps, Identifier ident)
Undocumented in source. Be warned that the author may not have intended to support it.
setFieldOffset
void setFieldOffset(AggregateDeclaration ad, uint* poffset, bool isunion)
Undocumented in source. Be warned that the author may not have intended to support it.
syntaxCopy
TemplateInstance syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.

Variables

tqual
TypeQualified tqual;
Undocumented in source.

Inherited Members

From TemplateInstance

name
Identifier name;
Undocumented in source.
tiargs
Objects* tiargs;
Undocumented in source.
tdtypes
Objects tdtypes;
Undocumented in source.
importedModules
Modules importedModules;
Undocumented in source.
tempdecl
Dsymbol tempdecl;
Undocumented in source.
enclosing
Dsymbol enclosing;
Undocumented in source.
aliasdecl
Dsymbol aliasdecl;
Undocumented in source.
inst
TemplateInstance inst;
Undocumented in source.
argsym
ScopeDsymbol argsym;
Undocumented in source.
hash
size_t hash;
Undocumented in source.
fargs
Expressions* fargs;
Undocumented in source.
deferred
TemplateInstances* deferred;
Undocumented in source.
memberOf
Module memberOf;
Undocumented in source.
tinst
TemplateInstance tinst;
Undocumented in source.
tnext
TemplateInstance tnext;
Undocumented in source.
minst
Module minst;
Undocumented in source.
inuse
ubyte inuse;
Undocumented in source.
nest
ushort nest [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
nestUp
void nestUp [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
nestDown
void nestDown [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
semantictiargsdone
bool semantictiargsdone [@property getter]

has semanticTiargs() been done?

semantictiargsdone
bool semantictiargsdone [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
havetempdecl
bool havetempdecl [@property getter]

if used second constructor

havetempdecl
bool havetempdecl [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
gagged
bool gagged [@property getter]

if the instantiation is done with error gagging

gagged
bool gagged [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
arraySyntaxCopy
Objects* arraySyntaxCopy(Objects* objs)
Undocumented in source. Be warned that the author may not have intended to support it.
syntaxCopy
TemplateInstance syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
toAlias
Dsymbol toAlias()
Undocumented in source. Be warned that the author may not have intended to support it.
kind
const(char)* kind()
Undocumented in source. Be warned that the author may not have intended to support it.
oneMember
bool oneMember(Dsymbol* ps, Identifier ident)
Undocumented in source. Be warned that the author may not have intended to support it.
toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.
toPrettyCharsHelper
const(char)* toPrettyCharsHelper()
Undocumented in source. Be warned that the author may not have intended to support it.
printInstantiationTrace
void printInstantiationTrace(Classification cl)

Given an error instantiating the TemplateInstance, give the nested TemplateInstance instantiations that got us here. Those are a list threaded into the nested scopes.

getIdent
Identifier getIdent()

Lazily generate identifier for template instance. This is because 75% of the ident's are never needed.

equalsx
bool equalsx(TemplateInstance ti)

Compare proposed template instantiation with existing template instantiation. Note that this is not commutative because of the auto ref check.

toHash
size_t toHash()
Undocumented in source. Be warned that the author may not have intended to support it.
isDiscardable
bool isDiscardable()
needsCodegen
bool needsCodegen()

Returns true if this is not instantiated in non-root module, and is a part of non-speculative instantiatiation.

findTempDecl
bool findTempDecl(Scope* sc, WithScopeSymbol* pwithsym)

Find template declaration corresponding to template instance.

updateTempDecl
bool updateTempDecl(Scope* sc, Dsymbol s)

Confirm s is a valid template, then store it. Input: sc s candidate symbol of template. It may be: TemplateDeclaration FuncDeclaration with findTemplateDeclRoot() != NULL OverloadSet which contains candidates

semanticTiargs
bool semanticTiargs(Loc loc, Scope* sc, Objects* tiargs, int flags)

Run semantic of tiargs as arguments of template. Input: loc sc tiargs array of template arguments flags 1: replace const variables with their initializers 2: don't devolve Parameter to Type

semanticTiargs
bool semanticTiargs(Scope* sc)

Run semantic on the elements of tiargs. Input: sc

findBestMatch
bool findBestMatch(Scope* sc, Expressions* fargs)
Undocumented in source. Be warned that the author may not have intended to support it.
needsTypeInference
bool needsTypeInference(Scope* sc, int flag)

Determine if template instance is really a template function, and that template function needs to infer types from the function arguments.

hasNestedArgs
bool hasNestedArgs(Objects* args, bool isstatic)

Determines if a TemplateInstance will need a nested generation of the TemplateDeclaration. Sets enclosing property if so, and returns != 0;

appendToModuleMember
Dsymbols* appendToModuleMember()

Append 'this' to the specific module members[]

declareParameters
void declareParameters(Scope* sc)

Declare parameters of template instance, initialize them with the template instance arguments.

genIdent
Identifier genIdent(Objects* args)

This instance needs an identifier for name mangling purposes. Create one by taking the template declaration name and adding the type signature for it.

expandMembers
void expandMembers(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
tryExpandMembers
void tryExpandMembers(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
trySemantic3
void trySemantic3(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
isTemplateInstance
inout(TemplateInstance) isTemplateInstance()
Undocumented in source. Be warned that the author may not have intended to support it.
accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.

Meta