Tatooine
grid_vertex_edges.h
Go to the documentation of this file.
1#ifndef TATOOINE_GRID_VERTEX_EDGES_H
2#define TATOOINE_GRID_VERTEX_EDGES_H
3
4//==============================================================================
5
6#include <iostream>
7#include "grid_edge.h"
9
10//==============================================================================
11namespace tatooine {
12//==============================================================================
13
14template <typename Real, size_t N>
16 explicit grid_vertex_edges(const grid_vertex<Real, N>& center)
17 : grid_vertex_neighbors<Real, N>(center) {}
18
19 //----------------------------------------------------------------------------
20
21 struct iterator : grid_vertex_neighbors<Real, N>::iterator {
22 auto operator*() {
23 if (edges()->center == this->v) {
24 std::cout << "[ ";
25 for (const auto& comp : *edges()->m_begin_vertex) {
26 std::cout << comp << ' ';
27 }
28 std::cout << "] - [";
29 for (const auto& comp : *edges()->center) { std::cout << comp << ' '; }
30 std::cout << "] - [";
31 for (const auto& comp : *edges()->m_end_vertex) {
32 std::cout << comp << ' ';
33 }
34 std::cout << "]\n";
35 }
36 return grid_edge<Real, N>(edges()->center, this->v);
37 }
38 auto edges() {
39 return reinterpret_cast<grid_vertex_edges*>(this->m_subgrid);
40 }
41 };
42
43 //----------------------------------------------------------------------------
44
45 auto begin() {
46 iterator it{this->m_begin_vertex, this};
47 if ((this->m_begin_vertex == this->center)) { ++it; }
48 return it;
49 }
50
51 //----------------------------------------------------------------------------
52
53 auto end() {
54 auto actual_end_vertex = this->m_begin_vertex;
55 actual_end_vertex.iterators.back() = this->m_end_vertex.iterators.back();
56 return iterator{actual_end_vertex, this};
57 }
58
59 //----------------------------------------------------------------------------
60};
61
62//==============================================================================
63} // namespace tatooine
64//==============================================================================
65#endif
Definition: algorithm.h:6
Definition: grid_edge.h:23
Definition: grid_vertex_edges.h:21
auto edges()
Definition: grid_vertex_edges.h:38
auto operator*()
Definition: grid_vertex_edges.h:22
Definition: grid_vertex_edges.h:15
auto begin()
Definition: grid_vertex_edges.h:45
grid_vertex_edges(const grid_vertex< Real, N > &center)
Definition: grid_vertex_edges.h:16
auto end()
Definition: grid_vertex_edges.h:53
Definition: grid_vertex_neighbors.h:11
grid_vertex< Real, N > center
Definition: grid_vertex_neighbors.h:12
grid_vertex< Real, N > v
Definition: subgrid.h:43
subgrid< Real, N > * m_subgrid
Definition: subgrid.h:44
grid_vertex< Real, N > m_begin_vertex
Definition: subgrid.h:20
grid_vertex< Real, N > m_end_vertex
Definition: subgrid.h:20