Counter ======= **Energy.Base.Counter** is a thread-safe counter that supports minimum and maximum bounds, overflow detection, and loop mode. Features -------- - Thread-safe increment and decrement. - Configurable minimum and maximum values. - Overflow flag. - Loop mode that wraps the value back to the minimum or maximum on overflow. - Direct value assignment and absolute value access. Example ------- ```csharp // Counter from 0 to 9, looping back to 0 Energy.Base.Counter counter = new Energy.Base.Counter(0, 9) { Loop = true, }; for (int i = 0; i < 15; i++) { Console.WriteLine(counter.Increment()); } // Output: 1, 2, ... 9, 0, 1, 2, 3, 4, 5 ``` Properties ---------- | Property | Description | |----------|-------------| | `Value` | Current counter value. | | `Minimum` | Minimum value. | | `Maximum` | Maximum value. | | `Overflow` | True if the last operation caused an overflow. | | `Loop` | Wrap around on overflow. | | `Absolute` | Current value as an unsigned long. | Methods ------- | Method | Description | |--------|-------------| | `Increment()` | Increment by one. | | `Increment(long by)` | Increment by the specified value. | | `Decrement()` | Decrement by one. | | `Decrement(long by)` | Decrement by the specified value. | | `Reset()` | Reset to the minimum value. | | `Reset(long value)` | Reset to the specified value. | | `ToString()` | Return the current value as a string. |