LBIBCell
 All Classes Functions Variables Friends Pages
Direction.hpp
1 /* Copyright (c) 2013 David Sichau <mail"at"sichau"dot"eu>
2  * 2013-2015 Simon Tanaka <tanakas"at"gmx"dot"ch>
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  */
22 #ifndef DIRECTION_HPP_
23 #define DIRECTION_HPP_
24 
25 #include <UtilLib/include/Singleton.hpp>
26 #include <array>
27 
28 namespace LbmLib {
29 
34 enum Direction {
35  T = 0,
36  E = 1,
37  N = 2,
38  W = 3,
39  S = 4,
40  NE = 5,
41  NW = 6,
42  SW = 7,
43  SE = 8
44 };
45 
51 Direction getInverseDirection(const Direction& d);
52 
53 
58  public:
63 
68 
73  std::array<Direction, 9>::const_iterator begin() const;
74 
79  std::array<Direction, 9>::const_iterator end() const;
80 
81  private:
85  static std::array<Direction, 9> directions_;
86 };
87 
92  public:
97 
102 
107  std::array<Direction, 4>::const_iterator begin() const;
108 
113  std::array<Direction, 4>::const_iterator end() const;
114 
115  private:
119  static std::array<Direction, 4> directions_;
120 };
121 
122 
127  public:
132 
137 
142  std::array<Direction, 5>::const_iterator begin() const;
143 
148  std::array<Direction, 5>::const_iterator end() const;
149 
150  private:
154  static std::array<Direction, 5> directions_;
155 };
156 } // end namespace
157 
158 #endif /* DIRECTION_HPP_ */
std::array< Direction, 4 >::const_iterator end() const
end To allow ranged based loop to iterate over this class
Definition: Direction.cpp:77
std::array< Direction, 9 >::const_iterator begin() const
begin To allow ranged based loop to iterate over this class
Definition: Direction.cpp:63
std::array< Direction, 4 >::const_iterator begin() const
begin To allow ranged based loop to iterate over this class
Definition: Direction.cpp:73
std::array< Direction, 9 >::const_iterator end() const
end To allow ranged based loop to iterate over this class
Definition: Direction.cpp:67
The CDEDirectionsIteratorD2Q5 class Provides methods to handle the Directions. Use the Function Direc...
Definition: Direction.hpp:126
std::array< Direction, 5 >::const_iterator end() const
end To allow ranged based loop to iterate over this class
Definition: Direction.cpp:88
std::array< Direction, 5 >::const_iterator begin() const
begin To allow ranged based loop to iterate over this class
Definition: Direction.cpp:84
The CDEDirectionsIteratorD2Q4 class Provides methods to handle the Directions. Use the Function Direc...
Definition: Direction.hpp:91
The DirectionOperations_ class Provides methods to handle the Directions. Use the Function Directions...
Definition: Direction.hpp:57