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 
25 {
26  public:
30  explicit Vasculature(const std::string& source);
31 
32  Vasculature(Vasculature&&) = default;
33  virtual ~Vasculature() = default;
34 
35  Vasculature& operator=(const Vasculature&) = default;
36  Vasculature& operator=(Vasculature&&) = default;
37 
41  std::vector<Section> sections() const;
42 
48  Section section(const uint32_t& id) const;
49 
53  inline const Points& points() const noexcept;
54 
58  inline const std::vector<morphio::floatType>& diameters() const noexcept;
59 
63  inline const std::vector<property::SectionType::Type>& sectionTypes() const noexcept;
64 
66  graph_iterator begin() const;
68  graph_iterator end() const;
69 
70  private:
71  std::shared_ptr<property::Properties> _properties;
72 
73  template <typename Property>
74  inline const std::vector<typename Property::Type>& get() const noexcept;
75 };
76 
77 template <typename Property>
78 inline const std::vector<typename Property::Type>& Vasculature::get() const noexcept {
79  return _properties->get<Property>();
80 }
81 
82 inline const Points& Vasculature::points() const noexcept {
83  return get<property::Point>();
84 }
85 
86 inline const std::vector<morphio::floatType>& Vasculature::diameters() const noexcept {
87  return get<property::Diameter>();
88 }
89 
90 inline const std::vector<property::SectionType::Type>& Vasculature::sectionTypes() const noexcept {
91  return get<property::SectionType>();
92 }
93 
94 } // namespace vasculature
95 } // namespace morphio
graph_iterator end() const
Definition: section.h:12
Vasculature(const std::string &source)
std::vector< Section > sections() const
graph_iterator begin() const
const std::vector< property::SectionType::Type > & sectionTypes() const noexcept
Definition: vasculature.h:90
Definition: dendritic_spine.h:9
Section section(const uint32_t &id) const
const std::vector< morphio::floatType > & diameters() const noexcept
Definition: vasculature.h:86
Definition: vasculature.h:24
std::vector< Point > Points
Definition: vector_types.h:26
const Points & points() const noexcept
Definition: vasculature.h:82
Definition: iterators.hpp:10