timerPrivate.h: mark override/final

Clarify the class hierarchy by decorating types and
method override and/or final whenever possible.
Does not change the hierarchy.
This commit is contained in:
Michael Davidsaver
2023-06-13 12:31:56 -07:00
parent f8f4376594
commit d97943b697

View File

@@ -24,6 +24,11 @@
#include "epicsTimer.h"
#include "compilerDependencies.h"
#if __cplusplus<201103L
# define final
# define override
#endif
#ifdef DEBUG
# define debugPrintf(ARGSINPAREN) printf ARGSINPAREN
#else
@@ -34,12 +39,12 @@ template < class T > class epicsGuard;
class timer : public epicsTimer, public tsDLNode < timer > {
public:
void destroy ();
void start ( class epicsTimerNotify &, const epicsTime & );
void start ( class epicsTimerNotify &, double delaySeconds );
void cancel ();
expireInfo getExpireInfo () const;
void show ( unsigned int level ) const;
void destroy () override;
void start ( class epicsTimerNotify &, const epicsTime & ) override final;
void start ( class epicsTimerNotify &, double delaySeconds ) override final;
void cancel () override final;
expireInfo getExpireInfo () const override final;
void show ( unsigned int level ) const override final;
void * operator new ( size_t size, tsFreeList < timer, 0x20 > & );
epicsPlacementDeleteOperator (( void *, tsFreeList < timer, 0x20 > & ))
protected:
@@ -62,9 +67,9 @@ private:
friend class timerQueue;
};
struct epicsTimerForC : public epicsTimerNotify, public timer {
struct epicsTimerForC final : public epicsTimerNotify, public timer {
public:
void destroy ();
void destroy () override final;
protected:
epicsTimerForC ( timerQueue &, epicsTimerCallback, void *pPrivateIn );
~epicsTimerForC ();
@@ -73,7 +78,7 @@ protected:
private:
epicsTimerCallback pCallBack;
void * pPrivate;
expireStatus expire ( const epicsTime & currentTime );
expireStatus expire ( const epicsTime & currentTime ) override final;
epicsTimerForC & operator = ( const epicsTimerForC & );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
@@ -90,10 +95,10 @@ class timerQueue : public epicsTimerQueue {
public:
timerQueue ( epicsTimerQueueNotify &notify );
virtual ~timerQueue ();
epicsTimer & createTimer ();
epicsTimer & createTimer () override final;
epicsTimerForC & createTimerForC ( epicsTimerCallback pCallback, void *pArg );
double process ( const epicsTime & currentTime );
void show ( unsigned int level ) const;
void show ( unsigned int level ) const override final;
private:
tsFreeList < timer, 0x20 > timerFreeList;
tsFreeList < epicsTimerForC, 0x20 > timerForCFreeList;
@@ -133,9 +138,9 @@ public:
typedef epicsSingleton < timerQueueActiveMgr > :: reference RefMgr;
timerQueueActive ( RefMgr &, bool okToShare, unsigned priority );
void start ();
epicsTimer & createTimer ();
epicsTimer & createTimer () override final;
epicsTimerForC & createTimerForC ( epicsTimerCallback pCallback, void *pArg );
void show ( unsigned int level ) const;
void show ( unsigned int level ) const override final;
bool sharingOK () const;
unsigned threadPriority () const;
protected:
@@ -150,9 +155,9 @@ private:
bool okToShare;
int exitFlag; // use atomic ops
bool terminateFlag;
void run ();
void reschedule ();
double quantum ();
void run () override final;
void reschedule () override final;
double quantum () override final;
void _printLastChanceExceptionMessage (
const char * pExceptionTypeName,
const char * pExceptionContext );
@@ -161,7 +166,7 @@ private:
timerQueueActive & operator = ( const timerQueueActive & );
};
class timerQueueActiveMgr {
class timerQueueActiveMgr final {
public:
typedef epicsSingleton < timerQueueActiveMgr > :: reference RefThis;
timerQueueActiveMgr ();
@@ -181,10 +186,10 @@ extern epicsSingleton < timerQueueActiveMgr > timerQueueMgrEPICS;
class timerQueuePassive : public epicsTimerQueuePassive {
public:
timerQueuePassive ( epicsTimerQueueNotify & );
epicsTimer & createTimer ();
epicsTimer & createTimer () override final;
epicsTimerForC & createTimerForC ( epicsTimerCallback pCallback, void *pArg );
void show ( unsigned int level ) const;
double process ( const epicsTime & currentTime );
void show ( unsigned int level ) const override final;
double process ( const epicsTime & currentTime ) override final;
protected:
timerQueue queue;
~timerQueuePassive ();
@@ -193,7 +198,7 @@ protected:
timerQueuePassive & operator = ( const timerQueuePassive & );
};
struct epicsTimerQueuePassiveForC :
struct epicsTimerQueuePassiveForC final :
public epicsTimerQueueNotify, public timerQueuePassive {
public:
epicsTimerQueuePassiveForC (
@@ -208,15 +213,15 @@ private:
epicsTimerQueueNotifyQuantum pSleepQuantumCallback;
void * pPrivate;
static epicsSingleton < tsFreeList < epicsTimerQueuePassiveForC, 0x10 > > pFreeList;
void reschedule ();
double quantum ();
void reschedule () override final;
double quantum () override final;
};
struct epicsTimerQueueActiveForC : public timerQueueActive,
struct epicsTimerQueueActiveForC final : public timerQueueActive,
public tsDLNode < epicsTimerQueueActiveForC > {
public:
epicsTimerQueueActiveForC ( RefMgr &, bool okToShare, unsigned priority );
void release ();
void release () override final;
void * operator new ( size_t );
void operator delete ( void * );
protected: