Value:class NAME { \
public: \
TIMETYPE mPrevTrigger; \
TIMETYPE mPeriod; \
\
NAME() { reset(); mPeriod = 1; }; \
NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
void setPeriod( TIMETYPE period) { mPeriod = period; }; \
TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
TIMETYPE getPeriod() { return mPeriod; }; \
TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
bool ready() { \
bool isReady = (getElapsed() >= mPeriod); \
if( isReady ) { reset(); } \
return isReady; \
} \
void reset() { mPrevTrigger = getTime(); }; \
void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
\
operator bool() { return ready(); } \
};
fl::UIButton trigger("Trigger")
Preprocessor-based class "template" for CEveryNTime, used with EVERY_N_TIME timekeepers.
Classes to implement EVERY_N_MILLIS, EVERY_N_SECONDS, EVERY_N_MINUTES, EVERY_N_HOURS, and EVERY_N_BSECONDS.
Definition at line 763 of file lib8tion.h.
763#define INSTANTIATE_EVERY_N_TIME_PERIODS(NAME,TIMETYPE,TIMEGETTER) \
764class NAME { \
765public: \
766 TIMETYPE mPrevTrigger; \
767 TIMETYPE mPeriod; \
768 \
769 NAME() { reset(); mPeriod = 1; }; \
770 NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
771 void setPeriod( TIMETYPE period) { mPeriod = period; }; \
772 TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
773 TIMETYPE getPeriod() { return mPeriod; }; \
774 TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
775 TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
776 TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
777 bool ready() { \
778 bool isReady = (getElapsed() >= mPeriod); \
779 if( isReady ) { reset(); } \
780 return isReady; \
781 } \
782 void reset() { mPrevTrigger = getTime(); }; \
783 void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
784 \
785 operator bool() { return ready(); } \
786};