MeshLib C++ Docs
Loading...
Searching...
No Matches
MRConstChildren.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPch/MRBindingMacros.h"
4#include "MRMeshFwd.h"
5
6#include <iterator>
7#include <memory>
8#include <vector>
9
10namespace MR
11{
14
15
35{
36public:
37 using Storage = std::vector<std::shared_ptr<Object>>;
38
40 class MR_BIND_IGNORE_PY Iterator
41 {
42 public:
45 using iterator_concept = std::forward_iterator_tag;
46 using iterator_category = std::input_iterator_tag;
47 using value_type = std::shared_ptr<const Object>;
48 using difference_type = std::ptrdiff_t;
49
51 explicit Iterator( Storage::const_iterator it ) : it_( it ) {}
52
53 [[nodiscard]] value_type operator *() const { return *it_; }
54 Iterator & operator ++() { ++it_; return *this; }
55 Iterator operator ++( int ) { auto res = *this; ++it_; return res; }
56 [[nodiscard]] bool operator ==( const Iterator & ) const = default;
57
58 private:
59 Storage::const_iterator it_{};
60 };
61
62 explicit ConstChildren( const Storage & children ) : children_( children ) {}
63
64 [[nodiscard]] MR_BIND_IGNORE_PY Iterator begin() const { return Iterator( children_.begin() ); }
65 [[nodiscard]] MR_BIND_IGNORE_PY Iterator end() const { return Iterator( children_.end() ); }
66
67 [[nodiscard]] bool empty() const { return children_.empty(); }
68 [[nodiscard]] size_t size() const { return children_.size(); }
69 [[nodiscard]] std::shared_ptr<const Object> operator []( size_t i ) const { return children_[i]; }
70
71private:
72 const Storage & children_;
73};
74
75}
constexpr bool operator==(ImVec2 a, ImVec2 b)
Definition MRImGuiVectorOperators.h:117
constexpr auto operator*(A a, B b)
Definition MRImGuiVectorOperators.h:107
dereferences to std::shared_ptr<const Object>, constructed on each dereference
Definition MRConstChildren.h:41
std::shared_ptr< const Object > value_type
Definition MRConstChildren.h:47
Iterator()
Definition MRConstChildren.h:50
size_t size() const
Definition MRConstChildren.h:68
ConstChildren(const Storage &children)
Definition MRConstChildren.h:62
bool empty() const
Definition MRConstChildren.h:67
Iterator(Storage::const_iterator it)
Definition MRConstChildren.h:51
MR_BIND_IGNORE_PY Iterator begin() const
Definition MRConstChildren.h:64
std::vector< std::shared_ptr< Object > > Storage
Definition MRConstChildren.h:37
std::input_iterator_tag iterator_category
Definition MRConstChildren.h:46
MR_BIND_IGNORE_PY Iterator end() const
Definition MRConstChildren.h:65
std::shared_ptr< const Object > operator[](size_t i) const
Definition MRConstChildren.h:69
std::ptrdiff_t difference_type
Definition MRConstChildren.h:48
std::forward_iterator_tag iterator_concept
Definition MRConstChildren.h:45
only for bindings generation
Definition MRCameraOrientationPlugin.h:8