Replace case_ordering with subcase.
The case_ordering data structure was useful for comparing cases,
but that is all that it did. In fact, the same data structure
can be used, at least, for extracting data from cases into arrays
of values, stuffing values back into cases, and for more general
comparisons than case_ordering anticipated.
This commit adds those abilities to case_ordering. It also renames
it to "subcase", because it is useful for more than just sorting
cases, which is all that case_ordering was designed for.
This commit also changes the allocation pattern for subcase from
having the implementation allocate all of the memory, to having
the subcase client allocate "struct subcase". This saves a
memory allocation without making life harder for anyone.
- Naming: the "case_ordering" name implied that it was
only useful for ordering (comparing cases).
- Interface: the interface
20 files changed: