diff options
author | Adrian Kummerlaender | 2016-12-11 12:36:04 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2016-12-11 12:37:09 +0100 |
commit | dbbef17103dc21c085c8b5713433fb730a5f8d3a (patch) | |
tree | a5c19ae0d025a7d94a93afdfb662eea33e599ea6 /src/util | |
parent | 93c5f7356364bd6e0276dddd0a78bcb50085629f (diff) | |
download | termlife-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.h | 40 | ||||
-rw-r--r-- | src/util/box_traverser.h | 26 |
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_ |