Functions for reordering lists of parsed objects by their names.
We implement functions for rearranging design elements into a different order.
In most ways, these functions are similar to the functions for filtering-by-name. However, the name filtering functions preserve the order of the input list, whereas these functions explicitly reorder the elements to match the order of the names.
This can be useful in various places, e.g., dependency ordering for modules or functions, reordering for port declarations in UDPs, etc.
These functions are reasonably efficient, i.e., if the list to reorder is long, we build a temporary fast alist to speed up the lookups. This optimization is logically invisible via mbe.