Skip to content
Snippets Groups Projects
Unverified Commit ae7e95d2 authored by Sam Yates's avatar Sam Yates Committed by GitHub
Browse files

Implement mextent representation for concrete regions (#978)

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`.
parent 01548527
No related branches found
No related tags found
No related merge requests found
Showing
with 1069 additions and 499 deletions
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment