templates
¶
Provide semantic-facing template metadata for compile-time specialization without requiring parser-level syntax support inside IRx.
Classes:
Functions:
-
add_generated_template_node– -
clear_generated_template_nodes– -
generated_template_nodes– -
get_template_args– -
get_template_params– -
is_template_node– -
is_template_specialization– -
mark_template_specialization– -
set_template_args– -
set_template_params– -
template_specialization_name–
TemplateParam
dataclass
¶
TemplateParam(
name: str,
bound: DataType,
loc: SourceLocation = NO_SOURCE_LOCATION,
)
Describe one bounded template variable attached to a function or method declaration. attributes: name: type: str bound: type: astx.DataType loc: type: astx.SourceLocation
TemplateTypeVar
¶
TemplateTypeVar(name: str, *, bound: DataType)
Bases: AnyType
Represent one unresolved template type parameter inside function signatures or local declared types before specialization. attributes: name: type: str bound: type: astx.DataType
Methods:
Source code in src/irx/astx/types.py
98 99 100 101 102 103 104 105 106 107 108 109 | |
get_struct
¶
get_struct(simplified: bool = False) -> ReprStruct
Source code in src/irx/astx/types.py
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | |
UnionType
¶
Bases: AnyType
Represent one union of concrete type references that semantic analysis may enumerate as a finite type domain. attributes: members: type: tuple[astx.DataType, Ellipsis] alias_name: type: str | None
Methods:
Source code in src/irx/astx/types.py
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | |
get_struct
¶
get_struct(simplified: bool = False) -> ReprStruct
Source code in src/irx/astx/types.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | |
add_generated_template_node
¶
add_generated_template_node(
module: Module, node: AST
) -> None
Source code in src/irx/astx/templates.py
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | |
clear_generated_template_nodes
¶
clear_generated_template_nodes(module: Module) -> None
Source code in src/irx/astx/templates.py
185 186 187 188 189 190 191 192 193 | |
generated_template_nodes
¶
generated_template_nodes(module: Module) -> tuple[AST, ...]
Source code in src/irx/astx/templates.py
196 197 198 199 200 201 202 203 204 205 206 207 | |
get_template_args
¶
get_template_args(node: AST) -> tuple[DataType, ...] | None
Source code in src/irx/astx/templates.py
108 109 110 111 112 113 114 115 116 117 118 119 120 121 | |
get_template_params
¶
get_template_params(node: AST) -> tuple[TemplateParam, ...]
Source code in src/irx/astx/templates.py
62 63 64 65 66 67 68 69 70 71 72 73 | |
is_template_node
¶
is_template_node(node: AST) -> bool
Source code in src/irx/astx/templates.py
76 77 78 79 80 81 82 83 84 85 86 | |
is_template_specialization
¶
is_template_specialization(node: AST) -> bool
Source code in src/irx/astx/templates.py
154 155 156 157 158 159 160 161 162 163 164 | |
mark_template_specialization
¶
mark_template_specialization(
node: AST, specialization_name: str
) -> None
Source code in src/irx/astx/templates.py
124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
set_template_args
¶
set_template_args(
node: AST, args: Iterable[DataType] | None
) -> None
Source code in src/irx/astx/templates.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
set_template_params
¶
set_template_params(
node: AST, params: Iterable[TemplateParam]
) -> None
Source code in src/irx/astx/templates.py
46 47 48 49 50 51 52 53 54 55 56 57 58 59 | |
template_specialization_name
¶
template_specialization_name(node: AST) -> str | None
Source code in src/irx/astx/templates.py
140 141 142 143 144 145 146 147 148 149 150 151 | |