summaryrefslogtreecommitdiff
path: root/common/cyclicint.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/cyclicint.h')
m---------common0
-rw-r--r--common/cyclicint.h84
2 files changed, 0 insertions, 84 deletions
diff --git a/common b/common
new file mode 160000
+Subproject dd64a35c949738c2c321989d065e0754556823d
diff --git a/common/cyclicint.h b/common/cyclicint.h
deleted file mode 100644
index 7c06877..0000000
--- a/common/cyclicint.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef CYCLICINT_H
-#define CYCLICINT_H
-
-//! Class containing an integer which ranges from 0..N-1.
-//!
-//! Exceeding the ends will overflow to the other end. Implicit cast to/from int is provided.
-template<int N>
-class CyclicInt {
- private:
- int value;
-
- CyclicInt set(int v) {
- value = v < N ? v < 0 ? N - -v % N : v : v % N;
- return *this;
- }
-
- public:
- CyclicInt() {
-
- }
-
- CyclicInt(int v) {
- set(v);
- }
-
- CyclicInt operator=(int v) {
- return set(v);
- }
-
- CyclicInt operator+(CyclicInt v) {
- return value + v.value;
- }
-
- CyclicInt operator+(int v) {
- return value + v;
- }
-
- CyclicInt operator+=(CyclicInt v) {
- return set(value + v.value);
- }
-
- CyclicInt operator++() {
- return set(value + 1);
- }
-
- CyclicInt operator++(int) {
- int v = value;
- set(value + 1);
- return v;
- }
-
- CyclicInt operator-() {
- return -value;
- }
-
- CyclicInt operator-(CyclicInt v) {
- return value - v.value;
- }
-
- CyclicInt operator-(int v) {
- return value - v;
- }
-
- CyclicInt operator-=(CyclicInt v) {
- return set(value - v.value);
- }
-
- CyclicInt operator--() {
- return set(value - 1);
- }
-
- CyclicInt operator--(int) {
- int v = value;
- set(value - 1);
- return v;
- }
-
- operator int() {
- return value;
- }
-};
-
-
-#endif