mito_section.h
1 /* Copyright (c) 2013-2023, EPFL/Blue Brain Project
2  *
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #pragma once
6 
7 #include <cstdint> // uint32_t
8 #include <memory> // std::shared_ptr
9 
10 #include <morphio/mitochondria.h>
11 #include <morphio/properties.h>
12 #include <morphio/section_base.h>
13 #include <morphio/types.h>
14 
15 namespace morphio {
16 using mito_upstream_iterator = upstream_iterator_t<MitoSection>;
17 using mito_breadth_iterator = morphio::breadth_iterator_t<MitoSection, Mitochondria>;
19 
21 class MitoSection: public SectionBase<MitoSection>
22 {
25 
26  public:
31  mito_depth_iterator depth_end() const;
32 
37  mito_breadth_iterator breadth_end() const;
38 
43  mito_upstream_iterator upstream_end() const;
44 
48  range<const uint32_t> neuriteSectionIds() const;
49 
53  range<const floatType> diameters() const;
54 
63  range<const floatType> relativePathLengths() const;
64 
68  bool hasSameShape(const MitoSection& other) const noexcept;
69 
70  protected:
71  MitoSection(uint32_t id, const std::shared_ptr<Property::Properties>& morphology)
72  : SectionBase(id, morphology) {}
73  friend MitoSection Mitochondria::section(uint32_t) const;
74  friend class SectionBase<MitoSection>;
75  friend class mut::MitoSection;
76 };
77 } // namespace morphio
morphio::depth_iterator_t
Definition: section_iterators.hpp:82
morphio::MitoSection
Definition: mito_section.h:21
morphio::Mitochondria::section
MitoSection section(uint32_t id) const
Return the Section with the given id.
morphio::Property::MitoDiameter
Definition: properties.h:53
morphio::MitoSection::upstream_begin
mito_upstream_iterator upstream_begin() const
morphio::upstream_iterator_t
Definition: section_iterators.hpp:111
morphio::MitoSection::diameters
range< const floatType > diameters() const
morphio::Property::MitoSection
Definition: properties.h:28
morphio::MitoSection::relativePathLengths
range< const floatType > relativePathLengths() const
morphio::MitoSection::breadth_begin
mito_breadth_iterator breadth_begin() const
morphio::breadth_iterator_t
Definition: section_iterators.hpp:53
morphio::MitoSection::neuriteSectionIds
range< const uint32_t > neuriteSectionIds() const
morphio::MitoSection::hasSameShape
bool hasSameShape(const MitoSection &other) const noexcept
morphio::mut::MitoSection
Definition: mito_section.h:17
morphio::MitoSection::depth_begin
mito_depth_iterator depth_begin() const
morphio::SectionBase
Definition: section_base.h:25