Wildmeshing Toolkit
LinkSingleDimensionIterable.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <queue>
4 
5 #include <wmtk/Mesh.hpp>
10 
12 
13 namespace wmtk::simplex {
14 
24 {
25 public:
26  class Iterator
27  {
28  public:
29  Iterator(LinkSingleDimensionIterable& container, const Tuple& t = Tuple());
31  bool operator!=(const Iterator& other) const;
32  Tuple& operator*();
33  const Tuple& operator*() const;
34 
35  private:
41  int64_t depth();
45  bool is_link_d1();
46 
50  void init();
51 
57 
59 
60  private:
64  int8_t m_edge_counter = 0;
65  };
66 
67 public:
69  const Mesh& mesh,
70  const Simplex& simplex,
71  const PrimitiveType cofaces_type);
72 
73  Iterator begin() { return Iterator(*this, m_simplex.tuple()); }
74  Iterator end() { return Iterator(*this); }
75 
76 private:
77  const Mesh& m_mesh;
82 
84 };
85 
86 } // namespace wmtk::simplex
const Tuple & tuple() const
Definition: Simplex.hpp:53
Iterating through the d-simplices of a mesh can be done in different ways, depending on the simplex d...