View source code
Display the source code in dmd/dtemplate.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Class dmd.dtemplate.TemplateInstance
Constructors
Name | Description |
---|---|
this
(loc, td, tiargs)
|
This constructor is only called when we figured out which function template to instantiate. |
Fields
Name | Type | Description |
---|---|---|
cppnamespace
|
CPPNamespaceDeclaration | C++ namespace this symbol belongs to |
localNum
|
ushort | perturb mangled name to avoid collisions with those in FuncDeclaration.localsymtab |
Properties
Name | Type | Description |
---|---|---|
gagged [get]
|
bool | if the instantiation is done with error gagging |
havetempdecl [get]
|
bool | if used second constructor |
semantictiargsdone [get]
|
bool | has semanticTiargs() been done? |
Methods
Name | Description |
---|---|
appendToModuleMember
()
|
Append 'this' to the specific module members[] |
declareParameters
(sc)
|
Declare parameters of template instance, initialize them with the template instance arguments. |
equalsx
(ti)
|
Compare proposed template instantiation with existing template instantiation. Note that this is not commutative because of the auto ref check. |
findBestMatch
(sc, fargs)
|
Find the TemplateDeclaration that matches this TemplateInstance best. |
findTempDecl
(sc, pwithsym)
|
Find template declaration corresponding to template instance. |
genIdent
(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. |
getIdent
()
|
Lazily generate identifier for template instance. This is because 75% of the ident's are never needed. |
hasNestedArgs
(args, isstatic)
|
Determines if a TemplateInstance will need a nested generation of the TemplateDeclaration. Sets enclosing property if so, and returns != 0; |
isDiscardable
()
|
|
needsCodegen
()
|
Returns true if this is not instantiated in non-root module, and is a part of non-speculative instantiatiation. |
needsTypeInference
(sc, flag)
|
Determine if template instance is really a template function, and that template function needs to infer types from the function arguments. |
printInstantiationTrace
(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. |
semanticTiargs
(loc, sc, tiargs, flags)
|
Run semantic of tiargs as arguments of template. |
semanticTiargs
(sc)
|
Run semantic on the elements of tiargs. |
updateTempDecl
(sc, s)
|
Confirm s is a valid template, then store it. |
_foreach
(sc, members, dg, pn)
|
Expands attribute declarations in members in depth first order. Calls dg(size_t symidx, Dsymbol *sym) for each member. If dg returns !=0, stops and returns that value else returns 0. Use this function to avoid the O(N + N^2/2) complexity of calculating dim and calling N times getNth. |
accept
(v)
|
|
addComment
(comment)
|
Add documentation comment to Dsymbol. Ignore NULL comments. |
arraySyntaxCopy
(a)
|
Do syntax copy of an array of Dsymbol's. |
factory
(classname)
|
Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor. |
findGetMembers
()
|
Look for member of the form: const(MemberInfo)[] getMembers(string); Returns NULL if not found |
followInstantiationContext
(p1, p2)
|
Returns true if any of the symbols p1 or p2 resides in the enclosing
instantiation scope of this .
|
getAccessModule
()
|
Determine which Module a Dsymbol is in, as far as access rights go. |
getModule
()
|
Determine which Module a Dsymbol is in. |
hasPointers
()
|
Is Dsymbol a variable that contains pointers? |
hasStaticCtorOrDtor
()
|
Return true if any of the members are static ctors or static dtors, or if any members have members that are. |
inNonRoot
()
|
Returns true if this symbol is defined in a non-root module without instantiation. |
isMember
()
|
Returns an AggregateDeclaration when toParent() is that. |
isMember2
()
|
Returns an AggregateDeclaration when toParent2() is that. |
isMemberDecl
()
|
Returns an AggregateDeclaration when toParentDecl() is that. |
isMemberLocal
()
|
Returns an AggregateDeclaration when toParentLocal() is that. |
oneMember
(ps, ident)
|
Determine if this symbol is only one. |
oneMembers
(members, ps, ident)
|
Same as Dsymbol::oneMember(), but look at an array of Dsymbols. |
opCmp
(o)
|
Compare with another Object obj. |
opEquals
(o)
|
Test whether this is equal to o .
The default implementation only compares by identity (using the is operator).
Generally, overrides for opEquals should attempt to compare objects by their contents.
|
pastMixin
()
|
pastMixin returns the enclosing symbol if this is a template mixin.
|
search
(loc, ident, flags)
|
This function is #1 on the list of functions that eat cpu time. Be very, very careful about slowing it down. |
searchX
(loc, sc, id, flags)
|
Search for identifier id as a member of this .
id may be a template instance.
|
setScope
(sc)
|
Set scope for future semantic analysis so we can deal better with forward references. |
size
(loc)
|
|
symtabInsert
(s)
|
Insert Dsymbol in table. |
symtabLookup
(s, id)
|
Look up identifier in symbol table. |
syntaxCopy
(s)
|
Copy the syntax. Used for template instantiations. If s is NULL, allocate the new object, otherwise fill it in. |
toAlias
()
|
If this symbol is really an alias for another, return that other. If needed, semantic() is invoked due to resolve forward reference. |
toAlias2
()
|
Resolve recursive tuple expansion in eponymous template. |
toHash
()
|
Compute hash function for Object. |
toParent
()
|
parent field returns a lexically enclosing scope symbol this is a member of.
|
toParent2
()
|
parent field returns a lexically enclosing scope symbol this is a member of.
|
toParentDecl
()
|
parent field returns a lexically enclosing scope symbol this is a member of.
|
toParentLocal
()
|
parent field returns a lexically enclosing scope symbol this is a member of.
|
toParentP
(p1, p2)
|
Returns the declaration scope scope of this unless any of the symbols
p1 or p2 resides in its enclosing instantiation scope then the
latter is returned.
|
toString
()
|
|
toString
()
|
Convert Object to a human readable string. |
visible
()
|
https
//dlang.org/spec/template.html#explicit_tmp_instantiation
Given
foo!(args) => name = foo tiargs = args
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.