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`.
Showing
- arbor/cable_cell.cpp 6 additions, 3 deletionsarbor/cable_cell.cpp
- arbor/include/arbor/cable_cell.hpp 1 addition, 1 deletionarbor/include/arbor/cable_cell.hpp
- arbor/include/arbor/morph/morphexcept.hpp 4 additions, 0 deletionsarbor/include/arbor/morph/morphexcept.hpp
- arbor/include/arbor/morph/morphology.hpp 65 additions, 0 deletionsarbor/include/arbor/morph/morphology.hpp
- arbor/include/arbor/morph/mprovider.hpp 2 additions, 2 deletionsarbor/include/arbor/morph/mprovider.hpp
- arbor/include/arbor/morph/primitives.hpp 5 additions, 0 deletionsarbor/include/arbor/morph/primitives.hpp
- arbor/include/arbor/morph/region.hpp 6 additions, 5 deletionsarbor/include/arbor/morph/region.hpp
- arbor/morph/locset.cpp 32 additions, 9 deletionsarbor/morph/locset.cpp
- arbor/morph/morphexcept.cpp 4 additions, 0 deletionsarbor/morph/morphexcept.cpp
- arbor/morph/morphology.cpp 203 additions, 1 deletionarbor/morph/morphology.cpp
- arbor/morph/mprovider.cpp 1 addition, 1 deletionarbor/morph/mprovider.cpp
- arbor/morph/region.cpp 111 additions, 235 deletionsarbor/morph/region.cpp
- arbor/util/iterutil.hpp 5 additions, 4 deletionsarbor/util/iterutil.hpp
- arbor/util/mergeview.hpp 163 additions, 0 deletionsarbor/util/mergeview.hpp
- test/unit/CMakeLists.txt 1 addition, 0 deletionstest/unit/CMakeLists.txt
- test/unit/morph_pred.hpp 84 additions, 0 deletionstest/unit/morph_pred.hpp
- test/unit/test_cv_geom.cpp 6 additions, 2 deletionstest/unit/test_cv_geom.cpp
- test/unit/test_merge_view.cpp 111 additions, 0 deletionstest/unit/test_merge_view.cpp
- test/unit/test_morph_expr.cpp 156 additions, 236 deletionstest/unit/test_morph_expr.cpp
- test/unit/test_morphology.cpp 103 additions, 0 deletionstest/unit/test_morphology.cpp
Please register or sign in to comment