+void
+subcase_concat (struct subcase *sc, const struct subcase *other)
+{
+ size_t i;
+
+ for (i = 0; i < other->n_fields; i++)
+ {
+ const struct subcase_field *f = &other->fields[i];
+ subcase_add (sc, f->case_index, f->width, f->direction);
+ }
+}
+
+void
+subcase_concat_always (struct subcase *sc, const struct subcase *other)
+{
+ size_t i;
+
+ for (i = 0; i < other->n_fields; i++)
+ {
+ const struct subcase_field *f = &other->fields[i];
+ subcase_add_always (sc, f->case_index, f->width, f->direction);
+ }
+}
+
+void
+subcase_project (struct subcase *sc, size_t offset)
+{
+ size_t i;
+
+ for (i = 0; i < sc->n_fields; i++)
+ sc->fields[i].case_index = i + offset;
+}
+