if (tmpl_attr_list_num_elements(tmpl_attr(vpt)) == 0) return;
ref = tmpl_attr_list_tail(tmpl_attr(vpt));
+ if (ref->ar_num == from) ref->ar_num = to;
- switch (ref->ar_filter_type) {
- case TMPL_ATTR_FILTER_TYPE_NONE:
- if (from != NUM_UNSPEC) break;
-
- ref->ar_filter_type = TMPL_ATTR_FILTER_TYPE_INDEX;
- ref->ar_num = to;
- break;
+ TMPL_ATTR_VERIFY(vpt);
+}
- case TMPL_ATTR_FILTER_TYPE_INDEX:
- if (ref->ar_num != from) break;
+/** Rewrite all instances of an array number
+ *
+ */
+void tmpl_attr_rewrite_num(tmpl_t *vpt, int16_t from, int16_t to)
+{
+ tmpl_attr_t *ref = NULL;
- ref->ar_num = to;
- break;
+ tmpl_assert_type(tmpl_is_attr(vpt) || tmpl_is_attr_unresolved(vpt));
- /*
- * Don't rewrite non-index types.
- */
- default:
- break;
- }
+ while ((ref = tmpl_attr_list_next(tmpl_attr(vpt), ref))) if (ref->ar_num == from) ref->ar_num = to;
TMPL_ATTR_VERIFY(vpt);
}