/* * ReversCounter.cpp * * Created on: 19 мая 2021 г. * Author: sozonov */ #include "ReversCounter.hh" ReversCounter::ReversCounter(unsigned int _dir, unsigned int _mod, unsigned int _r_v) : direction(_dir==0 ? ReversCounter::Increment : ReversCounter::Decrement), module( _mod ), reset_value( _r_v ), counter( _r_v ) {} //Метод сброса значения счётчика //При вызове данного метода значение счётчика сбрасывается на значение заданое в настроках void ReversCounter::reset() { counter = reset_value; } //Метод вызываемый при переходе через границы //В зависимости от направления счётчик либо принимает значение 0 либо module void ReversCounter::border_crossing() {} //todo: В файлах кода обычно комментариев нет - код должен быть понятным итак. //Метод счёта //При пересечении границ вызываем соттветствующий метод void ReversCounter::count() { //todo: Это либо switch:case, либо разные реализации модуля. if(direction==Increment) { if (counter == module) { counter = 0; //обнуляем счётчик при достижении значения границы border_crossing(); } else counter++; } else if(direction==Decrement){ if (counter == 0) { counter = module; //при уменьшении счётчика до нуля, делаем его равным верхней границе border_crossing(); } else counter--; } }