//=============================================================================
// Entspricht Aufg. 14.2 Ringzaehler, nur aufgeteilt auf mehrere Dateien,
// und den Ringzaehler als Bibliothek zur Verfuegung gestellt.

#include <cstdlib>
#include <iostream>
#include "ring_counter.h"
using namespace std;

//-----------------------------------------------------------------------------

ring_counter::ring_counter(int begin, int end, int delta)
 : begin_(begin), end_(end), delta_(delta),
   value_(begin)
{
   if ((begin_ < end_ && delta_ <= 0) || (begin_ > end_ && delta_ >= 0))
   {
      cout << "Die Werte " << begin_ << ", " << end_ << ", " << delta_
         << " erzeugen einen Endlos Ring-Counter\n";
      exit(1);
   }
}

//-------------------------------------------------------------------------------

int ring_counter::next()
{
   value_ += delta_;
   if ((delta_ < 0 && value_ < end_) || (delta_ > 0 && value_ > end_))
   {
      value_ = begin_;
   }
   return value_;
}
