vox.fe.ast.decl.template_

Members

Enums

TemplateParamDeclFlags
enum TemplateParamDeclFlags
Undocumented in source.

Functions

clone_node
CloneState clone_node(AstIndex node_start, AstIndex after_node, ScopeIndex instance_scope, CompilationContext* c)

Perform copiying of AST subtree and index fixing node_start..after_node is the range of slots to be copied instance_scope is the scope created around AST subtree copy All nodes need to fixed via CloneState through indices pointing inside cloned tree

get_template_instance
AstIndex get_template_instance(AstIndex templateIndex, TokenIndex start, AstNodes args, TypeCheckState state)
Undocumented in source. Be warned that the author may not have intended to support it.
name_register_self_template
void name_register_self_template(AstIndex nodeIndex, TemplateDeclNode* node, NameRegisterState state)
Undocumented in source. Be warned that the author may not have intended to support it.
post_clone
void post_clone(AstIndex nodeIndex, CloneState state)

Applies offset to indices pointing into copied area Happens before name register

post_clone_template
void post_clone_template(TemplateDeclNode* node, CloneState state)
Undocumented in source. Be warned that the author may not have intended to support it.
print_template
void print_template(TemplateDeclNode* node, AstPrintState state)
Undocumented in source. Be warned that the author may not have intended to support it.
print_template_param
void print_template_param(TemplateParamDeclNode* node, AstPrintState state)
Undocumented in source. Be warned that the author may not have intended to support it.
set_instance_id
void set_instance_id(AstIndex instance_index, AstNodes instance_args, CompilationContext* c)
Undocumented in source. Be warned that the author may not have intended to support it.

Structs

CloneState
struct CloneState
Undocumented in source.
TemplateDeclNode
struct TemplateDeclNode
Undocumented in source.
TemplateInstance
struct TemplateInstance
Undocumented in source.
TemplateParamDeclNode
struct TemplateParamDeclNode
Undocumented in source.

Meta

Authors

Andrey Penechko. We rely on the fact that nodes are allocated sequentially, which allows us to simply copy a range on slots and fix indices, in order to create template instance.