mito_section.h
1 #pragma once
2 
3 #include <morphio/mito_section.h>
4 #include <morphio/properties.h>
5 #include <morphio/types.h>
6 
7 namespace morphio {
8 namespace mut {
9 
11 {
12  public:
13  MitoSection(Mitochondria* mitochondria,
14  unsigned int id,
15  const Property::MitochondriaPointLevel& pointProperties);
16  MitoSection(Mitochondria* mitochondria, unsigned int id, const morphio::MitoSection& section);
17  MitoSection(Mitochondria* mitochondria, unsigned int id, const MitoSection& section);
18 
19  std::shared_ptr<MitoSection> appendSection(const Property::MitochondriaPointLevel& points);
20 
21  std::shared_ptr<MitoSection> appendSection(const std::shared_ptr<MitoSection>& original_section,
22  bool recursive);
23 
24  std::shared_ptr<MitoSection> appendSection(const morphio::MitoSection& section, bool recursive);
25 
26  std::shared_ptr<MitoSection> parent() const;
27  bool isRoot() const;
28  const std::vector<std::shared_ptr<MitoSection>>& children() const;
29 
33  inline uint32_t id() const noexcept;
34 
38  inline const std::vector<morphio::floatType>& diameters() const noexcept;
39  inline std::vector<morphio::floatType>& diameters() noexcept;
45  inline const std::vector<uint32_t>& neuriteSectionIds() const noexcept;
46  inline std::vector<uint32_t>& neuriteSectionIds() noexcept;
54  inline const std::vector<morphio::floatType>& pathLengths() const noexcept;
55  inline std::vector<morphio::floatType>& pathLengths() noexcept;
58  private:
59  uint32_t _id;
60 
61  Mitochondria* _mitochondria;
62 
63  public:
64  // TODO: make private
66 };
67 
68 inline uint32_t MitoSection::id() const noexcept {
69  return _id;
70 }
71 
72 inline const std::vector<morphio::floatType>& MitoSection::diameters() const noexcept {
73  return _mitoPoints._diameters;
74 }
75 
76 inline const std::vector<uint32_t>& MitoSection::neuriteSectionIds() const noexcept {
77  return _mitoPoints._sectionIds;
78 }
79 
80 inline const std::vector<morphio::floatType>& MitoSection::pathLengths() const noexcept {
81  return _mitoPoints._relativePathLengths;
82 }
83 
84 inline std::vector<morphio::floatType>& MitoSection::diameters() noexcept {
85  return _mitoPoints._diameters;
86 }
87 
88 inline std::vector<uint32_t>& MitoSection::neuriteSectionIds() noexcept {
89  return _mitoPoints._sectionIds;
90 }
91 
92 inline std::vector<morphio::floatType>& MitoSection::pathLengths() noexcept {
93  return _mitoPoints._relativePathLengths;
94 }
95 
96 void friendDtorForSharedPtrMito(MitoSection* section);
97 
98 } // namespace mut
99 } // namespace morphio
Definition: mito_section.h:14
Definition: mito_section.h:11
const std::vector< morphio::floatType > & pathLengths() const noexcept
Definition: mito_section.h:80
uint32_t id() const noexcept
Definition: mito_section.h:68
const std::vector< uint32_t > & neuriteSectionIds() const noexcept
Definition: mito_section.h:76
const std::vector< morphio::floatType > & diameters() const noexcept
Definition: mito_section.h:72
Definition: mitochondria.h:29
Definition: endoplasmic_reticulum.h:5