aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorAdrian Kummerlaender2016-12-11 12:36:04 +0100
committerAdrian Kummerlaender2016-12-11 12:37:09 +0100
commitdbbef17103dc21c085c8b5713433fb730a5f8d3a (patch)
treea5c19ae0d025a7d94a93afdfb662eea33e599ea6 /src/util
parent93c5f7356364bd6e0276dddd0a78bcb50085629f (diff)
downloadtermlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar.gz
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar.bz2
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar.lz
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar.xz
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.tar.zst
termlife-dbbef17103dc21c085c8b5713433fb730a5f8d3a.zip
Move `util` namespace classes into matching folder
Diffstat (limited to 'src/util')
-rw-r--r--src/util/box_indicator.h40
-rw-r--r--src/util/box_traverser.h26
2 files changed, 66 insertions, 0 deletions
diff --git a/src/util/box_indicator.h b/src/util/box_indicator.h
new file mode 100644
index 0000000..c0493c7
--- /dev/null
+++ b/src/util/box_indicator.h
@@ -0,0 +1,40 @@
+#ifndef LIFE_SRC_UTIL_BOX_INDICATOR_
+#define LIFE_SRC_UTIL_BOX_INDICATOR_
+
+namespace life {
+namespace util {
+
+class BoxIndicator {
+ public:
+ BoxIndicator(
+ const std::size_t offset_x,
+ const std::size_t offset_y,
+ const std::size_t size_x,
+ const std::size_t size_y):
+ a_x_{offset_x},
+ a_y_{offset_y},
+ b_x_{a_x_ + size_x},
+ b_y_{a_y_ + size_y} { }
+
+ BoxIndicator(const std::size_t size_x, const std::size_t size_y):
+ BoxIndicator(0, 0, size_x, size_y) { }
+
+ bool operator()(const std::size_t x, const std::size_t y) const {
+ return x >= this->a_x_
+ && x < this->b_x_
+ && y >= this->a_y_
+ && y < this->b_y_;
+ }
+
+ protected:
+ const std::size_t a_x_;
+ const std::size_t a_y_;
+ const std::size_t b_x_;
+ const std::size_t b_y_;
+
+};
+
+}
+}
+
+#endif // LIFE_SRC_UTIL_BOX_INDICATOR_
diff --git a/src/util/box_traverser.h b/src/util/box_traverser.h
new file mode 100644
index 0000000..cb7dfeb
--- /dev/null
+++ b/src/util/box_traverser.h
@@ -0,0 +1,26 @@
+#ifndef LIFE_SRC_UTIL_BOX_TRAVERSER_
+#define LIFE_SRC_UTIL_BOX_TRAVERSER_
+
+#include <functional>
+
+#include "box_indicator.h"
+
+namespace life {
+namespace util {
+
+struct BoxTraverser : public BoxIndicator {
+ using BoxIndicator::BoxIndicator;
+
+ void for_each(const std::function<void(std::size_t, std::size_t)> f) const {
+ for ( std::size_t x = this->a_x_; x < this->b_x_; x++ ) {
+ for ( std::size_t y = this->a_y_; y < this->b_y_; y++ ) {
+ f(x, y);
+ }
+ }
+ }
+};
+
+}
+}
+
+#endif // LIFE_SRC_UTIL_BOX_TRAVERSER_