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)
25
26// 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)
33
40
47
53
57
61
65
68
75
78
81
89
94
98
102
106
112
116
120
124
127
134
137
140
148
153
157
161
165
170
175
181
185
189
194
198
204
207
210
218
222
228
232
236
241
245
251
254
257
265
269
270// to iterate over all edges with same origin vertex as firstEdge (INCLUDING firstEdge)
271// for ( Edge e : orgRing( topology, firstEdge ) ) ...
276
281
282// to iterate over all edges with same origin vertex as firstEdge (EXCLUDING firstEdge)
283// for ( Edge e : orgRing0( topology, firstEdge ) ) ...
288
289// to iterate over all edges with same left face as firstEdge (INCLUDING firstEdge)
290// for ( Edge e : leftRing( topology, firstEdge ) ) ...
295
300
301// to iterate over all edges with same left face as firstEdge (EXCLUDING firstEdge)
302// for ( Edge e : leftRing0( topology, firstEdge ) ) ...
307
308#ifdef __cplusplus
309} // extern "C"
310#endif
struct MR_MeshTopology MR_MeshTopology
Definition MR2DContoursTriangulation.h:15
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:31
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:36
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)
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)
struct MR_NextEdgeSameLeft MR_NextEdgeSameLeft
Definition MRRingIterator.h:46
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)
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:39
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)
MRC_API MR_RingIterator_MR_NextEdgeSameLeft * MR_incr_MR_RingIterator_MR_NextEdgeSameLeft(MR_RingIterator_MR_NextEdgeSameLeft *_this)
MRC_API MR_EdgeId MR_RingIterator_MR_NextEdgeSameOrigin_next(const MR_RingIterator_MR_NextEdgeSameOrigin *_this, MR_EdgeId e)
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)
MRC_API const MR_NextEdgeSameOrigin * MR_NextEdgeSameOrigin_OffsetPtr(const MR_NextEdgeSameOrigin *ptr, ptrdiff_t i)
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)
MRC_API MR_NextEdgeSameLeft * MR_NextEdgeSameLeft_OffsetMutablePtr(MR_NextEdgeSameLeft *ptr, ptrdiff_t i)
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 MR_EdgeId MR_RingIterator_MR_NextEdgeSameLeft_next(const MR_RingIterator_MR_NextEdgeSameLeft *_this, MR_EdgeId e)
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:153
Definition MRId.h:45
Definition MRId.h:55