section.h
1 #pragma once
2 
3 #include <memory> // std::shared_ptr
4 
5 #include <morphio/morphology.h>
6 #include <morphio/properties.h>
7 #include <morphio/section_base.h>
8 #include <morphio/section_iterators.hpp>
9 #include <morphio/types.h>
10 
11 namespace morphio {
35 
36 class Section: public SectionBase<Section>
37 {
40 
41  public:
46  depth_iterator depth_end() const;
47 
52  breadth_iterator breadth_end() const;
53 
58  upstream_iterator upstream_end() const;
59 
65  range<const Point> points() const;
66 
72  range<const floatType> diameters() const;
73 
79  range<const floatType> perimeters() const;
80 
84  SectionType type() const;
85  friend class mut::Section;
86  friend Section Morphology::section(uint32_t) const;
87  friend class SectionBase<Section>;
88 
89  protected:
90  Section(uint32_t id_, const std::shared_ptr<Property::Properties>& properties)
91  : SectionBase(id_, properties) {}
92 };
93 
94 } // namespace morphio
95 
96 std::ostream& operator<<(std::ostream& os, const morphio::Section& section);
97 std::ostream& operator<<(std::ostream& os, const morphio::range<const morphio::Point>& points);
Section section(uint32_t id) const
Definition: section_base.h:25
Definition: section.h:37
range< const floatType > perimeters() const
SectionType type() const
range< const Point > points() const
range< const floatType > diameters() const
breadth_iterator breadth_begin() const
upstream_iterator upstream_begin() const
depth_iterator depth_begin() const
Definition: section_iterators.hpp:54
Definition: section_iterators.hpp:82
Definition: section.h:19
Definition: section_iterators.hpp:110
Definition: endoplasmic_reticulum.h:5
Definition: properties.h:38
Definition: properties.h:28