43 lines
1.9 KiB
C++
43 lines
1.9 KiB
C++
|
|
/*
|
|||
|
|
* ReversCounter.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 19 мая 2021 г.
|
|||
|
|
* Author: sozonov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_
|
|||
|
|
#define UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_
|
|||
|
|
|
|||
|
|
/*!Класс реализует логику работы реверсивного счётчика:
|
|||
|
|
*В зависимости от настройки direction, при вызове метода счёта, счетчик либо увеличивает, либо уменьшает свое значение
|
|||
|
|
*Модуль счёта module отвечает за значение сброса счётчика
|
|||
|
|
*При вызове метода сброса, счётчик принимает значение по сбросу reset_value */
|
|||
|
|
|
|||
|
|
class ReversCounter {
|
|||
|
|
public:
|
|||
|
|
//todo: В конструктор необходимо передавать енум. Решение о преобразовании - на вызывающем коде.
|
|||
|
|
enum Direction{
|
|||
|
|
Increment ,
|
|||
|
|
Decrement
|
|||
|
|
};
|
|||
|
|
ReversCounter(unsigned int _dir, unsigned int _mod, unsigned int _r_v);
|
|||
|
|
|
|||
|
|
//!Дискретный шаг счёта.
|
|||
|
|
void count();
|
|||
|
|
//!Сброс значения счетчика.
|
|||
|
|
void reset();
|
|||
|
|
//!Получение значения счётчика.
|
|||
|
|
unsigned int getCount() const{return counter;}
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
//Данные, задающиеся в настройках
|
|||
|
|
Direction direction; //!<направление счета
|
|||
|
|
const unsigned int module; //!<модуль счёта
|
|||
|
|
const unsigned int reset_value; //!<значение по сбросу
|
|||
|
|
unsigned int counter; //!<значение счётчика
|
|||
|
|
|
|||
|
|
//!метод при пересечении через границы счётчика
|
|||
|
|
virtual void border_crossing();
|
|||
|
|
};
|
|||
|
|
#endif /* UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_ */
|