+static inline void set_{{node.name}}_{{attr.name}}_(ir_node *node, {{attr.type}} {{attr.name}})
+{
+ assert(is_{{node.name}}(node));
+ node->attr.{{node.attrs_name}}.{{attr.name}} = {{attr.name}};
+}
+{% endfor -%}
+
+{%- for input in node.ins %}
+static inline ir_node *get_{{node.name}}_{{input[0]}}_(const ir_node *node)
+{
+ assert(is_{{node.name}}(node));
+ return get_irn_n(node, n_{{node.name}}_{{input[0]}});
+}
+
+static inline void set_{{node.name}}_{{input[0]}}_(ir_node *node, ir_node *{{input[0]|escape_keywords}})
+{
+ assert(is_{{node.name}}(node));
+ set_irn_n(node, n_{{node.name}}_{{input[0]}}, {{input[0]|escape_keywords}});
+}
+{% endfor %}
+
+{%- if node.input_name %}
+static inline int get_{{node.name}}_n_{{node.input_name}}s_(ir_node const *node)
+{
+ assert(is_{{node.name}}(node));
+ return get_irn_arity(node){% if node.ins %} - (n_{{node.name}}_max + 1){% endif %};
+}
+
+static inline ir_node *get_{{node.name}}_{{node.input_name}}_(ir_node const *node, int pos)
+{
+ assert(0 <= pos && pos < get_{{node.name}}_n_{{node.input_name}}s(node));
+ return get_irn_n(node, pos{% if node.ins %} + (n_{{node.name}}_max + 1){% endif %});
+}