MeshLib C Docs
Loading...
Searching...
No Matches
MRRingIterator.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MRId.h>
4#include <MRCMisc/exports.h>
5
6#include <stdbool.h>
7#include <stddef.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
15typedef struct MR_MeshTopology MR_MeshTopology; // Defined in `#include <MRCMesh/MRMeshTopology.h>`.
16
17
18// The iterator to find all edges in a ring of edges (e.g. all edges with same origin or all edges with same left face)
24
25// The iterator to find all edges in a ring of edges (e.g. all edges with same origin or all edges with same left face)
31
37
43
48
51
54
58
61
66
69
72
78
83
87
91
96
99
102
106
109
114
117
120
126
131
135
139
144
149
154
157
160
165
169
174
177
180
186
190
195
198
201
206
210
215
218
221
227
231
232// to iterate over all edges with same origin vertex as firstEdge (INCLUDING firstEdge)
233// for ( Edge e : orgRing( topology, firstEdge ) ) ...
238
243
244// to iterate over all edges with same origin vertex as firstEdge (EXCLUDING firstEdge)
245// for ( Edge e : orgRing0( topology, firstEdge ) ) ...
250
251// to iterate over all edges with same left face as firstEdge (INCLUDING firstEdge)
252// for ( Edge e : leftRing( topology, firstEdge ) ) ...
257
262
263// to iterate over all edges with same left face as firstEdge (EXCLUDING firstEdge)
264// for ( Edge e : leftRing0( topology, firstEdge ) ) ...
269
270#ifdef __cplusplus
271} // extern "C"
272#endif
struct MR_MeshTopology MR_MeshTopology
Definition MR2DContoursTriangulation.h:16
struct MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameOrigin MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameOrigin
simple alternative to boost/iterator_range Generated from class MR::IteratorRange<MR::RingIterator<MR...
Definition MRIteratorRange.h:28
struct MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameLeft MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameLeft
simple alternative to boost/iterator_range Generated from class MR::IteratorRange<MR::RingIterator<MR...
Definition MRIteratorRange.h:32
struct MR_RingIterator_MR_NextEdgeSameOrigin MR_RingIterator_MR_NextEdgeSameOrigin
Definition MRIteratorRange.h:14
struct MR_RingIterator_MR_NextEdgeSameLeft MR_RingIterator_MR_NextEdgeSameLeft
Definition MRIteratorRange.h:13
MRC_API void MR_NextEdgeSameLeft_DestroyArray(const MR_NextEdgeSameLeft *_this)
Destroys a heap-allocated array of MR_NextEdgeSameLeft. Does nothing if the pointer is null.
MRC_API void MR_NextEdgeSameLeft_Destroy(const MR_NextEdgeSameLeft *_this)
Destroys a heap-allocated instance of MR_NextEdgeSameLeft. Does nothing if the pointer is null.
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameLeft * MR_leftRing0(const MR_MeshTopology *topology, MR_EdgeId edge)
MRC_API MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_MutableUpcastTo_MR_NextEdgeSameLeft(MR_RingIterator_MR_NextEdgeSameLeft *object)
Upcasts an instance of MR::RingIterator<MR::NextEdgeSameLeft> to its base class MR::NextEdgeSameLeft.
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_OffsetMutablePtr(MR_RingIterator_MR_NextEdgeSameLeft *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_MutableStaticDowncastTo_MR_RingIterator_MR_NextEdgeSameOrigin(MR_NextEdgeSameOrigin *object)
MRC_API MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_MutableUpcastTo_MR_NextEdgeSameOrigin(MR_RingIterator_MR_NextEdgeSameOrigin *object)
Upcasts an instance of MR::RingIterator<MR::NextEdgeSameOrigin> to its base class MR::NextEdgeSameOri...
MRC_API MR_EdgeId MR_deref_MR_RingIterator_MR_NextEdgeSameOrigin(const MR_RingIterator_MR_NextEdgeSameOrigin *_this)
MRC_API void MR_NextEdgeSameOrigin_Destroy(const MR_NextEdgeSameOrigin *_this)
Destroys a heap-allocated instance of MR_NextEdgeSameOrigin. Does nothing if the pointer is null.
MRC_API MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_OffsetMutablePtr(MR_NextEdgeSameOrigin *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
struct MR_NextEdgeSameLeft MR_NextEdgeSameLeft
Definition MRRingIterator.h:42
MRC_API const MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_UpcastTo_MR_NextEdgeSameOrigin(const MR_RingIterator_MR_NextEdgeSameOrigin *object)
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_AssignFromAnother(MR_RingIterator_MR_NextEdgeSameOrigin *_this, const MR_RingIterator_MR_NextEdgeSameOrigin *_other)
MRC_API MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_AssignFromAnother(MR_NextEdgeSameOrigin *_this, const MR_NextEdgeSameOrigin *_other)
MRC_API MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_Construct(const MR_MeshTopology *topology)
MRC_API MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_ConstructFromAnother(const MR_NextEdgeSameLeft *_other)
MRC_API const MR_RingIterator_MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_StaticDowncastTo_MR_RingIterator_MR_NextEdgeSameLeft(const MR_NextEdgeSameLeft *object)
MRC_API MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_AssignFromAnother(MR_NextEdgeSameLeft *_this, const MR_NextEdgeSameLeft *_other)
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_OffsetMutablePtr(MR_RingIterator_MR_NextEdgeSameOrigin *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API bool MR_equal_MR_RingIterator_MR_NextEdgeSameOrigin(const MR_RingIterator_MR_NextEdgeSameOrigin *a, const MR_RingIterator_MR_NextEdgeSameOrigin *b)
MRC_API const MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_UpcastTo_MR_NextEdgeSameLeft(const MR_RingIterator_MR_NextEdgeSameLeft *object)
struct MR_NextEdgeSameOrigin MR_NextEdgeSameOrigin
Definition MRRingIterator.h:36
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_incr_MR_RingIterator_MR_NextEdgeSameOrigin(MR_RingIterator_MR_NextEdgeSameOrigin *_this)
MRC_API const MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_OffsetPtr(const MR_NextEdgeSameLeft *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_incr_MR_RingIterator_MR_NextEdgeSameLeft(MR_RingIterator_MR_NextEdgeSameLeft *_this)
MRC_API void MR_RingIterator_MR_NextEdgeSameOrigin_Destroy(const MR_RingIterator_MR_NextEdgeSameOrigin *_this)
Destroys a heap-allocated instance of MR_RingIterator_MR_NextEdgeSameOrigin. Does nothing if the poin...
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_ConstructFromAnother(const MR_RingIterator_MR_NextEdgeSameOrigin *_other)
MRC_API MR_RingIterator_MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_Construct(const MR_MeshTopology *topology, MR_EdgeId edge, bool first)
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_Construct(const MR_MeshTopology *topology, MR_EdgeId edge, bool first)
MRC_API const MR_RingIterator_MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_OffsetPtr(const MR_RingIterator_MR_NextEdgeSameLeft *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API const MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_OffsetPtr(const MR_NextEdgeSameOrigin *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameLeft * MR_leftRing_MR_FaceId(const MR_MeshTopology *topology, MR_FaceId f)
MRC_API MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_ConstructFromAnother(const MR_NextEdgeSameOrigin *_other)
MRC_API void MR_NextEdgeSameOrigin_DestroyArray(const MR_NextEdgeSameOrigin *_this)
Destroys a heap-allocated array of MR_NextEdgeSameOrigin. Does nothing if the pointer is null.
MRC_API const MR_RingIterator_MR_NextEdgeSameOrigin * MR_RingIterator_MR_NextEdgeSameOrigin_OffsetPtr(const MR_RingIterator_MR_NextEdgeSameOrigin *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_OffsetMutablePtr(MR_NextEdgeSameLeft *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameOrigin * MR_orgRing0(const MR_MeshTopology *topology, MR_EdgeId edge)
MRC_API const MR_RingIterator_MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_StaticDowncastTo_MR_RingIterator_MR_NextEdgeSameOrigin(const MR_NextEdgeSameOrigin *object)
MRC_API bool MR_not_equal_MR_RingIterator_MR_NextEdgeSameOrigin(const MR_RingIterator_MR_NextEdgeSameOrigin *a, const MR_RingIterator_MR_NextEdgeSameOrigin *b)
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_AssignFromAnother(MR_RingIterator_MR_NextEdgeSameLeft *_this, const MR_RingIterator_MR_NextEdgeSameLeft *_other)
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_RingIterator_MR_NextEdgeSameLeft_ConstructFromAnother(const MR_RingIterator_MR_NextEdgeSameLeft *_other)
MRC_API bool MR_RingIterator_MR_NextEdgeSameOrigin_first(const MR_RingIterator_MR_NextEdgeSameOrigin *_this)
MRC_API bool MR_RingIterator_MR_NextEdgeSameLeft_first(const MR_RingIterator_MR_NextEdgeSameLeft *_this)
MRC_API void MR_RingIterator_MR_NextEdgeSameLeft_DestroyArray(const MR_RingIterator_MR_NextEdgeSameLeft *_this)
Destroys a heap-allocated array of MR_RingIterator_MR_NextEdgeSameLeft. Does nothing if the pointer i...
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameOrigin * MR_orgRing_MR_VertId(const MR_MeshTopology *topology, MR_VertId v)
MRC_API MR_EdgeId MR_deref_MR_RingIterator_MR_NextEdgeSameLeft(const MR_RingIterator_MR_NextEdgeSameLeft *_this)
MRC_API void MR_RingIterator_MR_NextEdgeSameOrigin_DestroyArray(const MR_RingIterator_MR_NextEdgeSameOrigin *_this)
Destroys a heap-allocated array of MR_RingIterator_MR_NextEdgeSameOrigin. Does nothing if the pointer...
MRC_API MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_Construct(const MR_MeshTopology *topology)
MRC_API MR_EdgeId MR_NextEdgeSameOrigin_next(const MR_NextEdgeSameOrigin *_this, MR_EdgeId e)
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameLeft * MR_leftRing_MR_EdgeId(const MR_MeshTopology *topology, MR_EdgeId edge)
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_MutableStaticDowncastTo_MR_RingIterator_MR_NextEdgeSameLeft(MR_NextEdgeSameLeft *object)
MRC_API void MR_RingIterator_MR_NextEdgeSameLeft_Destroy(const MR_RingIterator_MR_NextEdgeSameLeft *_this)
Destroys a heap-allocated instance of MR_RingIterator_MR_NextEdgeSameLeft. Does nothing if the pointe...
MRC_API MR_EdgeId MR_NextEdgeSameLeft_next(const MR_NextEdgeSameLeft *_this, MR_EdgeId e)
MRC_API MR_IteratorRange_MR_RingIterator_MR_NextEdgeSameOrigin * MR_orgRing_MR_EdgeId(const MR_MeshTopology *topology, MR_EdgeId edge)
#define MRC_API
Definition exports.h:11
Definition MRId.h:152
Definition MRId.h:46
Definition MRId.h:56