Skip to content
Snippets Groups Projects
user avatar
Sam Yates authored
Use a wrapper `mextent` around an `mcable_list` with a stronger invariant for the representation of thingified regions, with public intersection and union and intersection-testing operations. Creation of an `mextent` requires a morphology, but any further operations on one do not.

* Implement `mextent`, wrapping an `mcable_list` and enforcing an invariant: all cables on the same branch are distinct; and there is a cable in the extent for every branch that intersects with the region on the morphology tree described by the cable list.
* Recast region union and intersection operations on regions in terms of `mextent` objects.
* Use `mextent` objects as the concrete representation for regions in `mprovider`.
* Modify region/locset expression implementations to accommodate new representation.
* Add `region` ctors that wrap an explicit cable list or `mextent`.
* Add a lazy range-based merge view in `util/mergeview.hpp`.
ae7e95d2
Name Last commit Last update