Wildmeshing Toolkit
Loading...
Searching...
No Matches
IdSimplex.hpp
Go to the documentation of this file.
1#pragma once
2#include <tuple>
4
5
6namespace wmtk {
7class Mesh;
8class Tuple;
9} // namespace wmtk
10namespace wmtk::simplex {
11
12class NavigatableSimplex;
13
15{
16public:
17 friend class wmtk::Mesh;
18 friend class NavigatableSimplex;
19 IdSimplex() = default;
21 bool valid() const { return m_index == -1; }
22
25
26 bool operator<(const IdSimplex& o) const;
27 bool operator==(const IdSimplex& o) const;
28 bool operator!=(const IdSimplex& o) const;
29
30 int64_t index() const { return m_index; }
31
32protected:
35 , m_index(index)
36 {}
37
38 static int64_t id(const Mesh& m, PrimitiveType pt, const Tuple& t);
39
40private:
42 int64_t m_index = -1;
43
44private:
45 decltype(auto) as_tuple() const { return std::tie(m_primitive_type, m_index); }
46};
47
48inline bool IdSimplex::operator<(const IdSimplex& o) const
49{
50 return as_tuple() < o.as_tuple();
51}
52inline bool IdSimplex::operator==(const IdSimplex& o) const
53{
54 return as_tuple() == o.as_tuple();
55}
56inline bool IdSimplex::operator!=(const IdSimplex& o) const
57{
58 return as_tuple() != o.as_tuple();
59}
60} // namespace wmtk::simplex
The Tuple is the basic navigation tool in our mesh data structure.
Definition Tuple.hpp:19
static int64_t id(const Mesh &m, PrimitiveType pt, const Tuple &t)
Definition IdSimplex.cpp:10
decltype(auto) as_tuple() const
Definition IdSimplex.hpp:45
bool operator!=(const IdSimplex &o) const
Definition IdSimplex.hpp:56
IdSimplex(PrimitiveType pt, int64_t index)
Definition IdSimplex.hpp:33
bool operator==(const IdSimplex &o) const
Definition IdSimplex.hpp:52
PrimitiveType m_primitive_type
Definition IdSimplex.hpp:41
PrimitiveType primitive_type() const
Definition IdSimplex.hpp:23
int64_t index() const
Definition IdSimplex.hpp:30
bool operator<(const IdSimplex &o) const
Definition IdSimplex.hpp:48
int64_t dimension() const
Definition IdSimplex.hpp:24
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.