From 75b572be78fbebda792adb9b2246443b76c30caa Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Fri, 22 Mar 2002 02:03:18 +0000 Subject: [PATCH] improved dll interface --- src/libCom/cxxTemplates/epicsOnce.h | 10 ++--- src/libCom/cxxTemplates/epicsSingleton.h | 9 ----- .../cxxTemplates/epicsSingletonBase.cpp | 9 +++++ src/libCom/osi/epicsEvent.h | 1 - src/libCom/osi/epicsMutex.h | 1 - src/libCom/osi/epicsThread.cpp | 1 + src/libCom/osi/epicsThread.h | 7 ++-- src/libCom/osi/epicsTime.cpp | 39 +++++++++++++++++++ src/libCom/osi/epicsTime.h | 39 ------------------- src/libCom/timer/epicsTimer.cpp | 2 + src/libCom/timer/epicsTimer.h | 6 +-- 11 files changed, 63 insertions(+), 61 deletions(-) diff --git a/src/libCom/cxxTemplates/epicsOnce.h b/src/libCom/cxxTemplates/epicsOnce.h index 28b84df6e..34bf4f309 100644 --- a/src/libCom/cxxTemplates/epicsOnce.h +++ b/src/libCom/cxxTemplates/epicsOnce.h @@ -19,16 +19,16 @@ #include "shareLib.h" -class epicsShareClass epicsOnceNotify { +class epicsOnceNotify { public: - virtual ~epicsOnceNotify (); + epicsShareFunc virtual ~epicsOnceNotify (); virtual void initialize () = 0; }; -class epicsShareClass epicsOnce { +class epicsOnce { public: - static epicsOnce & create ( epicsOnceNotify & notifyIn ); - virtual ~epicsOnce (); + epicsShareFunc static epicsOnce & create ( epicsOnceNotify & notifyIn ); + virtual ~epicsOnce (); // use destroy virtual void once () = 0; virtual void destroy () = 0; }; diff --git a/src/libCom/cxxTemplates/epicsSingleton.h b/src/libCom/cxxTemplates/epicsSingleton.h index 0780f9142..5a1fa7b38 100644 --- a/src/libCom/cxxTemplates/epicsSingleton.h +++ b/src/libCom/cxxTemplates/epicsSingleton.h @@ -34,15 +34,6 @@ private: void * factory (); }; -inline epicsSingletonBase::epicsSingletonBase () : pSingleton ( 0 ) -{ -} - -inline void * epicsSingletonBase::singletonPointer () const -{ - return this->pSingleton; -} - template < class T > inline epicsSingleton::~epicsSingleton () { diff --git a/src/libCom/cxxTemplates/epicsSingletonBase.cpp b/src/libCom/cxxTemplates/epicsSingletonBase.cpp index f3eb2d37e..331dc581d 100644 --- a/src/libCom/cxxTemplates/epicsSingletonBase.cpp +++ b/src/libCom/cxxTemplates/epicsSingletonBase.cpp @@ -14,6 +14,15 @@ epicsMutex epicsSingletonBase::mutex; +epicsSingletonBase::epicsSingletonBase () : pSingleton ( 0 ) +{ +} + +void * epicsSingletonBase::singletonPointer () const +{ + return this->pSingleton; +} + epicsSingletonBase::~epicsSingletonBase () { } diff --git a/src/libCom/osi/epicsEvent.h b/src/libCom/osi/epicsEvent.h index 7973e1386..165dbdc4c 100644 --- a/src/libCom/osi/epicsEvent.h +++ b/src/libCom/osi/epicsEvent.h @@ -27,7 +27,6 @@ public: void show ( unsigned level ) const; class invalidSemaphore {}; /* exception */ - class noMemory {}; /* exception */ private: epicsEvent ( const epicsEvent & ); epicsEvent & operator = ( const epicsEvent & ); diff --git a/src/libCom/osi/epicsMutex.h b/src/libCom/osi/epicsMutex.h index 25f95b373..e99670a9e 100644 --- a/src/libCom/osi/epicsMutex.h +++ b/src/libCom/osi/epicsMutex.h @@ -22,7 +22,6 @@ public: void unlock (); void show ( unsigned level ) const; - class noMemory {}; // exception class invalidSemaphore {}; // exception private: epicsMutexId id; diff --git a/src/libCom/osi/epicsThread.cpp b/src/libCom/osi/epicsThread.cpp index 17f0eb8a7..8cc845303 100644 --- a/src/libCom/osi/epicsThread.cpp +++ b/src/libCom/osi/epicsThread.cpp @@ -12,6 +12,7 @@ #define epicsExportSharedSymbols #include "epicsThread.h" +epicsThreadRunable::~epicsThreadRunable () {} void epicsThreadRunable::stop() {}; void epicsThreadRunable::show(unsigned int) const {}; diff --git a/src/libCom/osi/epicsThread.h b/src/libCom/osi/epicsThread.h index 745c5d74c..60d3d1448 100644 --- a/src/libCom/osi/epicsThread.h +++ b/src/libCom/osi/epicsThread.h @@ -105,11 +105,12 @@ epicsShareFunc void * epicsShareAPI epicsThreadPrivateGet(epicsThreadPrivateId); #include "epicsEvent.h" -class epicsShareClass epicsThreadRunable { +class epicsThreadRunable { public: + epicsShareFunc virtual ~epicsThreadRunable (); virtual void run() = 0; - virtual void stop(); - virtual void show(unsigned int level) const; + epicsShareFunc virtual void stop(); + epicsShareFunc virtual void show(unsigned int level) const; }; class epicsShareClass epicsThread { diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index 924ba6dce..5ba3facfd 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -178,6 +178,45 @@ epicsTime::epicsTime (const time_t_wrapper &ansiTimeTicks) this->nSec = static_cast ( (sec-this->secPastEpoch) * nSecPerSec ); } +epicsTime::epicsTime (const epicsTimeStamp &ts) +{ + this->secPastEpoch = ts.secPastEpoch; + this->nSec = ts.nsec; +} + +epicsTime::epicsTime () : secPastEpoch(0u), nSec(0u) {} + +epicsTime::epicsTime (const epicsTime &t) : + secPastEpoch (t.secPastEpoch), nSec (t.nSec) {} + +epicsTime epicsTime::getCurrent () +{ + epicsTimeStamp current; + int status; + + status = epicsTimeGetCurrent (¤t); + if (status) { + throwWithLocation ( unableToFetchCurrentTime () ); + } + + return epicsTime (current); +} + +epicsTime epicsTime::getEvent (const epicsTimeEvent &event) +{ + epicsTimeStamp current; + int status; + + status = epicsTimeGetEvent (¤t, event.eventNumber); + if (status) { + throwWithLocation ( unableToFetchCurrentTime () ); + } + + return epicsTime (current); +} + +void epicsTime::synchronize () {} // depricated + // // operator time_t_wrapper () // diff --git a/src/libCom/osi/epicsTime.h b/src/libCom/osi/epicsTime.h index c74db41c1..b774b4960 100644 --- a/src/libCom/osi/epicsTime.h +++ b/src/libCom/osi/epicsTime.h @@ -251,45 +251,6 @@ int epicsTime_gmtime ( const time_t *clock, struct tm *result ); /* epicsTime inline member functions ,*/ #ifdef __cplusplus -inline epicsTime::epicsTime (const epicsTimeStamp &ts) -{ - this->secPastEpoch = ts.secPastEpoch; - this->nSec = ts.nsec; -} - -inline epicsTime epicsTime::getCurrent () -{ - epicsTimeStamp current; - int status; - - status = epicsTimeGetCurrent (¤t); - if (status) { - throwWithLocation ( unableToFetchCurrentTime () ); - } - - return epicsTime (current); -} - -inline epicsTime epicsTime::getEvent (const epicsTimeEvent &event) -{ - epicsTimeStamp current; - int status; - - status = epicsTimeGetEvent (¤t, event.eventNumber); - if (status) { - throwWithLocation ( unableToFetchCurrentTime () ); - } - - return epicsTime (current); -} - -inline void epicsTime::synchronize () {} // depricated - -inline epicsTime::epicsTime () : secPastEpoch(0u), nSec(0u) {} - -inline epicsTime::epicsTime (const epicsTime &t) -: secPastEpoch (t.secPastEpoch), nSec (t.nSec) {} - inline epicsTime epicsTime::operator - (const double &rhs) const { return epicsTime::operator + (-rhs); diff --git a/src/libCom/timer/epicsTimer.cpp b/src/libCom/timer/epicsTimer.cpp index 759c16eb5..207888fe3 100644 --- a/src/libCom/timer/epicsTimer.cpp +++ b/src/libCom/timer/epicsTimer.cpp @@ -41,6 +41,8 @@ epicsTimer::~epicsTimer () {} epicsTimerQueueNotify::~epicsTimerQueueNotify () {} +epicsTimerNotify::~epicsTimerNotify () {} + void epicsTimerNotify::show ( unsigned /* level */ ) const {} epicsTimerForC::epicsTimerForC ( timerQueue &queue, epicsTimerCallback pCBIn, void *pPrivateIn ) : diff --git a/src/libCom/timer/epicsTimer.h b/src/libCom/timer/epicsTimer.h index a38be7c7d..a0666bbb6 100644 --- a/src/libCom/timer/epicsTimer.h +++ b/src/libCom/timer/epicsTimer.h @@ -39,13 +39,15 @@ public: bool again; double delay; }; + epicsShareFunc virtual ~epicsTimerNotify (); // return "noRestart" or "expireStatus ( restart, 30.0 /* sec */ )" virtual expireStatus expire ( const epicsTime & currentTime ) = 0; - virtual epicsShareFunc void show ( unsigned int level ) const; + epicsShareFunc virtual epicsShareFunc void show ( unsigned int level ) const; }; class epicsTimer { // X aCC 655 public: + virtual ~epicsTimer () = 0; // use destroy virtual void destroy () = 0; virtual void start ( epicsTimerNotify &, const epicsTime & ) = 0; virtual void start ( epicsTimerNotify &, double delaySeconds ) = 0; @@ -58,8 +60,6 @@ public: virtual expireInfo getExpireInfo () const = 0; double getExpireDelay (); virtual void show ( unsigned int level ) const = 0; -protected: - virtual ~epicsTimer () = 0; // use destroy }; class epicsTimerQueue { // X aCC 655