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(); } \
};
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 1059 of file lib8tion.h.
1059#define INSTANTIATE_EVERY_N_TIME_PERIODS(NAME,TIMETYPE,TIMEGETTER) \
1060class NAME { \
1061public: \
1062 TIMETYPE mPrevTrigger; \
1063 TIMETYPE mPeriod; \
1064 \
1065 NAME() { reset(); mPeriod = 1; }; \
1066 NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
1067 void setPeriod( TIMETYPE period) { mPeriod = period; }; \
1068 TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
1069 TIMETYPE getPeriod() { return mPeriod; }; \
1070 TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
1071 TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
1072 TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
1073 bool ready() { \
1074 bool isReady = (getElapsed() >= mPeriod); \
1075 if( isReady ) { reset(); } \
1076 return isReady; \
1077 } \
1078 void reset() { mPrevTrigger = getTime(); }; \
1079 void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
1080 \
1081 operator bool() { return ready(); } \
1082};