PIP 5.5.3
Platform-Independent Primitives
Public Member Functions | Protected Member Functions | List of all members
PITimer Class Reference

Timer. More...

#include <pitimer.h>

Inheritance diagram for PITimer:
Inheritance graph
[legend]

Public Member Functions

 PITimer ()
 Constructs timer.
 
 PITimer (std::function< void(int)> func)
 Constructs timer with method void(int)
 
 PITimer (std::function< void()> func)
 Constructs timer with method void()
 
PISystemTime interval () const
 Returns timer loop delay.
 
void setInterval (PISystemTime interval)
 Set timer loop delay.
 
bool isRunning () const
 Returns if timer is started.
 
bool isStopping () const
 Return if timer is stopping.
 
bool waitForFinish (PISystemTime timeout={})
 Wait for timer stop.
 
bool start (PISystemTime interval)
 Start timer with "interval" loop delay.
 
bool start (PISystemTime interval, std::function< void()> func)
 Start timer with "interval" loop delay and tick function "func".
 
void stopAndWait (int timeout_ms)
 Stop timer and wait for finish.
 
void stopAndWait (PISystemTime timeout={})
 Stop timer and wait for finish.
 
void setSlot (std::function< void()> func)
 Set timer tick function.
 
void setSlot (std::function< void(int)> func)
 Set timer tick function.
 
bool isCallQueuedEvents () const
 Returns if timer should exec maybeCallQueuedEvents() at every tick. By default true.
 
void setCallQueuedEvents (bool yes)
 Set timer exec maybeCallQueuedEvents() at every tick.
 
void addDelimiter (int delim, std::function< void(int)> func=nullptr)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void addDelimiter (int delim, std::function< void()> func)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void addDelimiter (int delim, std::function< void(void *)> slot)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void removeDelimiter (int delim)
 Remove all frequency delimiters "delim".
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
virtual const char * parentClassName () const
 Returns parent class name.
 
bool debug () const
 Return if piCoutObj of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object piCoutObj active.
 
PIVariant property (const char *name) const
 Returns property with name "name".
 
void setProperty (const char *name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const char *name) const
 Returns if property with name "name" exists.
 
PIStringList scopeList () const
 Returns subclass scope of this object (including this class name)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Disconnect object from all connections with event name "sig", connected to destination object "dest".
 
void piDisconnect (const PIString &sig)
 Disconnect object from all connections with event name "sig".
 
bool isPIObject () const
 Returns if this is valid PIObject (check signature)
 
template<typename T >
bool isTypeOf () const
 Returns if this is valid PIObject subclass "T" (check signature and classname)
 
template<typename T >
T * cast () const
 Returns cast to T if this is valid subclass "T" (check by isTypeOf()) or "nullptr".
 
void callQueuedEvents ()
 Execute all posted events from CONNECTU_QUEUED connections.
 
bool maybeCallQueuedEvents ()
 Check if any CONNECTU_QUEUED connections to this object and execute them. More...
 
void deleteLater ()
 Mark object to delete. More...
 
void deleted (PIObject *o)
 Raise before object delete. More...
 

Protected Member Functions

virtual void tick (int delimiter)
 Timer execution function, similar to "slot" or event timeout(). By default does nothing.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const char *name)
 Virtual function executes after property with name "name" has been changed.
 

Handlers

bool start ()
 Start timer with interval() loop delay.
 
bool restart ()
 Stop and start timer with interval() loop delay.
 
void stop ()
 Stop timer (don`t wait for finish)
 
void clearDelimiters ()
 Remove all frequency delimiters.
 

Events

void tickEvent (int delimiter)
 Raise on timer tick. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Returns if "o" is valid PIObject (check signature)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Returns if "o" is valid PIObject subclass "T" (check signature and classname)
 

Detailed Description

Timer.

Synopsis

This class implements timer function. PIP timers supports 3 way to tick notify, deferred start and frequency delimiters.

Notify variants

Notify variants:

Lambda should be [ ]( ){ } or [ ](int){ } format.

All these variants are equivalent, use most applicable.

Frequency delimiters

Frequency delimiter is an integer number and "slot" function. If "slot" function is null timer main "slot" will be used. Each delimiter numbers tick timer will be execute delimiters or timer main "slot" function with delimiter value = delimiter number.

Example:

void tfunc(int delim) {
piCout << "tick with delimiter" << delim;
};
void tfunc4(int delim) {
piCout << "tick4 with delimiter" << delim;
};
int main() {
PITimer timer(tfunc);
timer.addDelimiter(2);
timer.addDelimiter(4, tfunc4);
timer.start(50);
piMSleep(200);
timer.stopAndWait();
return 0;
};
/* Result:
tick with delimiter 1
tick with delimiter 1
tick with delimiter 2
tick with delimiter 1
tick with delimiter 1
tick with delimiter 2
tick4 with delimiter 4
*/
Timer.
Definition: pitimer.h:36
void piMSleep(double msecs)
Precise sleep for "msecs" milliseconds.
Definition: pitime.h:42
#define piCout
Macro used for conditional (piDebug) output to PICout(StdOut)
Definition: picout.h:35

Member Function Documentation

◆ tickEvent()

void PITimer::tickEvent ( int  delimiter)

Raise on timer tick.

"delimiter" is frequency delimiter, 1 for main loop.