7 #include <morphio/types.h>
10 namespace vasculature {
16 using Type =
unsigned int;
20 using Type = morphio::Point;
28 using Type = floatType;
36 using Type = std::array<unsigned int, 2>;
41 std::vector<Point::Type> _points;
42 std::vector<Diameter::Type> _diameters;
46 const std::vector<Diameter::Type>& diameters);
54 std::vector<morphio::floatType> leakiness;
59 std::vector<VascSection::Type> _sections;
60 std::vector<SectionType::Type> _sectionTypes;
61 std::map<uint32_t, std::vector<uint32_t>> _predecessors;
62 std::map<uint32_t, std::vector<uint32_t>> _successors;
72 std::vector<Connection::Type> _connectivity;
75 std::vector<typename T::Type>& get_mut() noexcept;
78 const std::vector<typename T::Type>& get()
const noexcept;
80 inline const std::map<uint32_t, std::vector<uint32_t>>& predecessors()
const noexcept;
81 inline const std::map<uint32_t, std::vector<uint32_t>>& successors()
const noexcept;
83 bool operator==(
const Properties& other)
const;
84 bool operator!=(
const Properties& other)
const;
87 inline const std::map<uint32_t, std::vector<uint32_t>>& Properties::predecessors() const noexcept {
88 return _sectionLevel._predecessors;
90 inline const std::map<uint32_t, std::vector<uint32_t>>& Properties::successors() const noexcept {
91 return _sectionLevel._successors;
94 std::ostream& operator<<(std::ostream& os,
const Properties& properties);
95 std::ostream& operator<<(std::ostream& os,
const VascPointLevel& pointLevel);
97 #define INSTANTIATE_TEMPLATE_GET(T, M) \
99 inline std::vector<T::Type>& Properties::get_mut<T>() noexcept { \
103 inline const std::vector<T::Type>& Properties::get<T>() const noexcept { \
107 INSTANTIATE_TEMPLATE_GET(VascSection, _sectionLevel._sections)
108 INSTANTIATE_TEMPLATE_GET(Point, _pointLevel._points)
109 INSTANTIATE_TEMPLATE_GET(Connection, _connectivity)
110 INSTANTIATE_TEMPLATE_GET(
SectionType, _sectionLevel._sectionTypes)
111 INSTANTIATE_TEMPLATE_GET(Diameter, _pointLevel._diameters)
113 #undef INSTANTIATE_TEMPLATE_GET