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 {
12 
13 using upstream_iterator = upstream_iterator_t<Section>;
14 using breadth_iterator = breadth_iterator_t<Section, Morphology>;
15 using depth_iterator = depth_iterator_t<Section, Morphology>;
16 
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);
Definition: section_iterators.hpp:109
Definition: section_iterators.hpp:53
depth_iterator depth_begin() const
Section section(uint32_t id) const
SectionType type() const
breadth_iterator_t< Section, Morphology > breadth_iterator
Definition: morphology.h:11
range< const Point > points() const
Definition: properties.h:16
Definition: dendritic_spine.h:9
Definition: section.h:19
Definition: section_iterators.hpp:81
Definition: properties.h:26
range< const floatType > perimeters() const
depth_iterator_t< Section, Morphology > depth_iterator
Definition: morphology.h:13
upstream_iterator upstream_begin() const
breadth_iterator breadth_begin() const
range< const floatType > diameters() const
SectionType
Definition: enums.h:61
Definition: section_base.h:24
Definition: section.h:36