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 
12 {
13  public:
14  MitoSection(Mitochondria* mitochondria,
15  unsigned int id,
16  const Property::MitochondriaPointLevel& pointProperties);
17  MitoSection(Mitochondria* mitochondria, unsigned int id, const morphio::MitoSection& section);
18  MitoSection(Mitochondria* mitochondria, unsigned int id, const MitoSection& section);
19 
20  std::shared_ptr<MitoSection> appendSection(const Property::MitochondriaPointLevel& points);
21 
22  std::shared_ptr<MitoSection> appendSection(const std::shared_ptr<MitoSection>& original_section,
23  bool recursive);
24 
25  std::shared_ptr<MitoSection> appendSection(const morphio::MitoSection& section, bool recursive);
26 
27  std::shared_ptr<MitoSection> parent() const;
28  bool isRoot() const;
29  const std::vector<std::shared_ptr<MitoSection>>& children() const;
30 
34  inline uint32_t id() const noexcept;
35 
39  inline const std::vector<morphio::floatType>& diameters() const noexcept;
40  inline std::vector<morphio::floatType>& diameters() noexcept;
46  inline const std::vector<uint32_t>& neuriteSectionIds() const noexcept;
47  inline std::vector<uint32_t>& neuriteSectionIds() noexcept;
55  inline const std::vector<morphio::floatType>& pathLengths() const noexcept;
56  inline std::vector<morphio::floatType>& pathLengths() noexcept;
59  private:
60  uint32_t _id;
61 
62  Mitochondria* _mitochondria;
63 
64  public:
65  // TODO: make private
67 };
68 
69 inline uint32_t MitoSection::id() const noexcept {
70  return _id;
71 }
72 
73 inline const std::vector<morphio::floatType>& MitoSection::diameters() const noexcept {
74  return _mitoPoints._diameters;
75 }
76 
77 inline const std::vector<uint32_t>& MitoSection::neuriteSectionIds() const noexcept {
78  return _mitoPoints._sectionIds;
79 }
80 
81 inline const std::vector<morphio::floatType>& MitoSection::pathLengths() const noexcept {
82  return _mitoPoints._relativePathLengths;
83 }
84 
85 inline std::vector<morphio::floatType>& MitoSection::diameters() noexcept {
86  return _mitoPoints._diameters;
87 }
88 
89 inline std::vector<uint32_t>& MitoSection::neuriteSectionIds() noexcept {
90  return _mitoPoints._sectionIds;
91 }
92 
93 inline std::vector<morphio::floatType>& MitoSection::pathLengths() noexcept {
94  return _mitoPoints._relativePathLengths;
95 }
96 
97 void friendDtorForSharedPtrMito(MitoSection* section);
98 
99 } // namespace mut
100 } // namespace morphio
Definition: mito_section.h:14
Definition: mito_section.h:11
const std::vector< uint32_t > & neuriteSectionIds() const noexcept
Definition: mito_section.h:77
uint32_t id() const noexcept
Definition: mito_section.h:69
Definition: dendritic_spine.h:9
Definition: mitochondria.h:21
const std::vector< morphio::floatType > & diameters() const noexcept
Definition: mito_section.h:73
const std::vector< morphio::floatType > & pathLengths() const noexcept
Definition: mito_section.h:81