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 939 of file lib8tion.h.
  939#define INSTANTIATE_EVERY_N_TIME_PERIODS(NAME,TIMETYPE,TIMEGETTER) \
  940class NAME {    \
  941public: \
  942    TIMETYPE mPrevTrigger;  \
  943    TIMETYPE mPeriod;   \
  944    \
  945    NAME() { reset(); mPeriod = 1; }; \
  946    NAME(TIMETYPE period) { reset(); setPeriod(period); };    \
  947    void setPeriod( TIMETYPE period) { mPeriod = period; }; \
  948    TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); };    \
  949    TIMETYPE getPeriod() { return mPeriod; };   \
  950    TIMETYPE getElapsed() { return getTime() - mPrevTrigger; }  \
  951    TIMETYPE getRemaining() { return mPeriod - getElapsed(); }  \
  952    TIMETYPE getLastTriggerTime() { return mPrevTrigger; }  \
  953    bool ready() { \
  954        bool isReady = (getElapsed() >= mPeriod);   \
  955        if( isReady ) { reset(); }  \
  956        return isReady; \
  957    }   \
  958    void reset() { mPrevTrigger = getTime(); }; \
  959    void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
  960        \
  961    operator bool() { return ready(); } \
  962};