vasculature.h
1 #pragma once
2 
3 #include <memory> // std::shared_ptr
4 #include <string> // std::string
5 #include <vector> // std::vector
6 
7 #include <morphio/types.h>
8 #include <morphio/vasc/iterators.hpp>
9 #include <morphio/vasc/properties.h>
10 
11 namespace morphio {
12 namespace vasculature {
13 
14 using graph_iterator = graph_iterator_t<Section, Vasculature>;
15 
17 {
18  public:
22  explicit Vasculature(const std::string& source);
23 
24  Vasculature(Vasculature&&) = default;
25  virtual ~Vasculature() = default;
26 
27  Vasculature& operator=(const Vasculature&) = default;
28  Vasculature& operator=(Vasculature&&) = default;
29 
33  std::vector<Section> sections() const;
34 
40  Section section(const uint32_t& id) const;
41 
45  inline const Points& points() const noexcept;
46 
50  inline const std::vector<morphio::floatType>& diameters() const noexcept;
51 
55  inline const std::vector<property::SectionType::Type>& sectionTypes() const noexcept;
56 
61  graph_iterator end() const;
62 
63  private:
64  std::shared_ptr<property::Properties> _properties;
65 
66  template <typename Property>
67  inline const std::vector<typename Property::Type>& get() const noexcept;
68 };
69 
70 template <typename Property>
71 inline const std::vector<typename Property::Type>& Vasculature::get() const noexcept {
72  return _properties->get<Property>();
73 }
74 
75 inline const Points& Vasculature::points() const noexcept {
76  return get<property::Point>();
77 }
78 
79 inline const std::vector<morphio::floatType>& Vasculature::diameters() const noexcept {
80  return get<property::Diameter>();
81 }
82 
83 inline const std::vector<property::SectionType::Type>& Vasculature::sectionTypes() const noexcept {
84  return get<property::SectionType>();
85 }
86 
87 } // namespace vasculature
88 } // namespace morphio
Definition: section.h:12
Definition: vasculature.h:17
std::vector< Section > sections() const
const std::vector< property::SectionType::Type > & sectionTypes() const noexcept
Definition: vasculature.h:83
Vasculature(const std::string &source)
const Points & points() const noexcept
Definition: vasculature.h:75
graph_iterator begin() const
const std::vector< morphio::floatType > & diameters() const noexcept
Definition: vasculature.h:79
Section section(const uint32_t &id) const
Definition: iterators.hpp:11
Definition: endoplasmic_reticulum.h:5