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.TemplateDeclaration
[mixin] template Identifier (parameters) [Constraint]
Fields
Name | Type | Description |
---|---|---|
inuse
|
int | for recursive expansion detection |
cppnamespace
|
CPPNamespaceDeclaration | C++ namespace this symbol belongs to |
Methods
Name | Description |
---|---|
addInstance
|
Add instance ti to TemplateDeclaration's table of instances. Return a handle we can use to later remove it if it fails instantiation. |
declareParameter
|
Declare template parameter tp with value o, and install it in the scope sc. |
deduceFunctionTemplateMatch
|
Match function arguments against a specific template function. |
doHeaderInstantiation
|
Limited function template instantiation for using fd.leastAsSpecialized() |
evaluateConstraint
|
Check to see if constraint is satisfied. |
findExistingInstance
|
Given a new instance tithis of this TemplateDeclaration, see if there already exists an instance. If so, return that existing instance. |
getConstraintEvalError
|
Destructively get the error message from the last constraint evaluation |
isOverloadable
|
We can overload templates. |
isVariadic
|
Check if the last template parameter is a tuple one,
and returns it if so, else returns null .
|
leastAsSpecialized
|
Determine partial specialization order of 'this' vs td2. |
matchWithInstance
|
Given that ti is an instance of this TemplateDeclaration, deduce the types of the parameters to this, and store those deduced types in dedtypes[]. |
overloadInsert
|
Overload existing TemplateDeclaration 'this' with the new one 's'. Return true if successful; i.e. no conflict. |
removeInstance
|
Remove TemplateInstance from table of instances. |
scopeForTemplateParameters
|
Create a scope for the parameters of the TemplateInstance
ti in the parent scope sc from the ScopeDsymbol paramsym.
|
toCharsNoConstraints
|
Similar to toChars , but does not print the template constraints
|
_foreach
|
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
|
|
addComment
|
Add documentation comment to Dsymbol. Ignore NULL comments. |
arraySyntaxCopy
|
Do syntax copy of an array of Dsymbol's. |
factory
|
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
|
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
|
Determine if this symbol is only one. |
oneMembers
|
Same as Dsymbol::oneMember(), but look at an array of Dsymbols. |
opCmp
|
Compare with another Object obj. |
opEquals
|
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.
|
prot
|
|
search
|
This function is #1 on the list of functions that eat cpu time. Be very, very careful about slowing it down. |
searchX
|
Search for identifier id as a member of this .
id may be a template instance.
|
setScope
|
Set scope for future semantic analysis so we can deal better with forward references. |
size
|
|
symtabLookup
|
Look up identifier in symbol table. |
syntaxCopy
|
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
|
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. |
https
//dlang.org/spec/template.html
https
//dlang.org/spec/template-mixin.html
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.