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.TemplateMixin
				
						
					
				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 | 
|---|---|
								
									_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. | 
								
									appendToModuleMember
								
								()
							 | 
							Append 'this' to the specific module members[] | 
								
									arraySyntaxCopy
								
								(a)
							 | 
							Do syntax copy of an array of Dsymbol's. | 
								
									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. | 
								
									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. | 
								
									findBestMatch
								
								(sc, fargs)
							 | 
							Find the TemplateDeclaration that matches this TemplateInstance best. | 
								
									findGetMembers
								
								()
							 | 
							Look for member of the form: const(MemberInfo)[] getMembers(string); Returns NULL if not found | 
								
									findTempDecl
								
								(sc, pwithsym)
							 | 
							Find template declaration corresponding to template instance. | 
								
									followInstantiationContext
								
								(p1, p2)
							 | 
							Returns true if any of the symbols p1 or p2 resides in the enclosing
 instantiation scope of this.
 | 
						
								
									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. | 
								
									getAccessModule
								
								()
							 | 
							Determine which Module a Dsymbol is in, as far as access rights go. | 
								
									getIdent
								
								()
							 | 
							Lazily generate identifier for template instance. This is because 75% of the ident's are never needed. | 
								
									getModule
								
								()
							 | 
							Determine which Module a Dsymbol is in. | 
								
									hasNestedArgs
								
								(args, isstatic)
							 | 
							Determines if a TemplateInstance will need a nested generation of the TemplateDeclaration. Sets enclosing property if so, and returns != 0; | 
								
									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. | 
								
									isDiscardable
								
								()
							 | 
							|
								
									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. | 
								
									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. | 
								
									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.
 | 
						
								
									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. | 
								
									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.
 | 
						
								
									semanticTiargs
								
								(loc, sc, tiargs, flags)
							 | 
							Run semantic of tiargs as arguments of template. | 
								
									semanticTiargs
								
								(sc)
							 | 
							Run semantic on the elements of tiargs. | 
								
									setScope
								
								(sc)
							 | 
							Set scope for future semantic analysis so we can deal better with forward references. | 
								
									size
								
								(loc)
							 | 
							|
								
									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. | 
								
									updateTempDecl
								
								(sc, s)
							 | 
							Confirm s is a valid template, then store it. | 
								
									visible
								
								()
							 | 
							
https
//dlang.org/spec/template-mixin.html
Syntax
mixin MixinTemplateName [TemplateArguments] [Identifier];
Authors
License
					Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.