- accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
- addInstance
TemplateInstance addInstance(TemplateInstance ti)
Add instance ti to TemplateDeclaration's table of instances.
Return a handle we can use to later remove it if it fails instantiation.
- declareParameter
RootObject declareParameter(Scope* sc, TemplateParameter tp, RootObject o)
Declare template parameter tp with value o, and install it in the scope sc.
- deduceFunctionTemplateMatch
MATCH deduceFunctionTemplateMatch(TemplateInstance ti, Scope* sc, FuncDeclaration fd, Type tthis, Expressions* fargs)
Match function arguments against a specific template function.
Input:
ti
sc instantiation scope
fd
tthis 'this' argument if !NULL
fargs arguments to function
Output:
fd Partially instantiated function declaration
ti.tdtypes Expression/Type deduced template arguments
- doHeaderInstantiation
FuncDeclaration doHeaderInstantiation(TemplateInstance ti, Scope* sc2, FuncDeclaration fd, Type tthis, Expressions* fargs)
Limited function template instantiation for using fd.leastAsSpecialized()
- evaluateConstraint
bool evaluateConstraint(TemplateInstance ti, Scope* sc, Scope* paramscope, Objects* dedargs, FuncDeclaration fd)
Check to see if constraint is satisfied.
- findExistingInstance
TemplateInstance findExistingInstance(TemplateInstance tithis, Expressions* fargs)
Given a new instance tithis of this TemplateDeclaration,
see if there already exists an instance.
If so, return that existing instance.
- getConstraintEvalError
const(char)* getConstraintEvalError(const(char)* tip)
Destructively get the error message from the last constraint evaluation
- hasStaticCtorOrDtor
bool hasStaticCtorOrDtor()
Undocumented in source. Be warned that the author may not have intended to support it.
- isOverloadable
bool isOverloadable()
We can overload templates.
- isTemplateDeclaration
inout(TemplateDeclaration) isTemplateDeclaration()
Undocumented in source. Be warned that the author may not have intended to support it.
- isVariadic
TemplateTupleParameter isVariadic()
Check if the last template parameter is a tuple one,
and returns it if so, else returns null.
- kind
const(char)* kind()
Undocumented in source. Be warned that the author may not have intended to support it.
- leastAsSpecialized
MATCH leastAsSpecialized(Scope* sc, TemplateDeclaration td2, Expressions* fargs)
Determine partial specialization order of 'this' vs td2.
- matchWithInstance
MATCH matchWithInstance(Scope* sc, TemplateInstance ti, Objects* dedtypes, Expressions* fargs, int flag)
Given that ti is an instance of this TemplateDeclaration,
deduce the types of the parameters to this, and store
those deduced types in dedtypes[].
Input:
flag 1: don't do semantic() because of dummy types
2: don't change types in matchArg()
Output:
dedtypes deduced arguments
Return match level.
- overloadInsert
bool overloadInsert(Dsymbol s)
Overload existing TemplateDeclaration 'this' with the new one 's'.
Return true if successful; i.e. no conflict.
- prot
Prot prot()
Undocumented in source. Be warned that the author may not have intended to support it.
- removeInstance
void removeInstance(TemplateInstance ti)
Remove TemplateInstance from table of instances.
Input:
handle returned by addInstance()
- scopeForTemplateParameters
Scope* scopeForTemplateParameters(TemplateInstance ti, Scope* sc)
Create a scope for the parameters of the TemplateInstance
ti in the parent scope sc from the ScopeDsymbol paramsym.
- syntaxCopy
Dsymbol syntaxCopy(Dsymbol )
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.
- toCharsNoConstraints
const(char)* toCharsNoConstraints()
Similar to toChars, but does not print the template constraints
- members
Dsymbols* members;
Undocumented in source.
- symtab
DsymbolTable symtab;
Undocumented in source.
- endlinnum
uint endlinnum;
Undocumented in source.
- syntaxCopy
Dsymbol syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- search
Dsymbol search(Loc loc, Identifier ident, int flags)
This function is #1 on the list of functions that eat cpu time.
Be very, very careful about slowing it down.
- importScope
void importScope(Dsymbol s, Prot protection)
Undocumented in source. Be warned that the author may not have intended to support it.
- addAccessiblePackage
void addAccessiblePackage(Package p, Prot protection)
Undocumented in source. Be warned that the author may not have intended to support it.
- isPackageAccessible
bool isPackageAccessible(Package p, Prot protection, int flags)
Undocumented in source. Be warned that the author may not have intended to support it.
- isforwardRef
bool isforwardRef()
Undocumented in source. Be warned that the author may not have intended to support it.
- multiplyDefined
void multiplyDefined(Loc loc, Dsymbol s1, Dsymbol s2)
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.
- findGetMembers
FuncDeclaration findGetMembers()
Look for member of the form:
const(MemberInfo)[] getMembers(string);
Returns NULL if not found
- symtabInsert
Dsymbol symtabInsert(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- symtabLookup
Dsymbol symtabLookup(Dsymbol s, Identifier id)
Look up identifier in symbol table.
- hasStaticCtorOrDtor
bool hasStaticCtorOrDtor()
Return true if any of the members are static ctors or static dtors, or if
any members have members that are.
- ForeachDg
alias ForeachDg = int delegate(size_t idx, Dsymbol s)
Undocumented in source.
- _foreach
int _foreach(Scope* sc, Dsymbols* members, ForeachDg dg, size_t* 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.
- isScopeDsymbol
inout(ScopeDsymbol) isScopeDsymbol()
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.
mixin template Identifier (parameters) Constraint https://dlang.org/spec/template.html
https://dlang.org/spec/template-mixin.html