 |
OpendTect
6.6
|
Go to the documentation of this file.
20 #define mImplSimpleMonitoredGet_impl(fnnm,typ,memb,ovrspec) \
21 typ fnnm() const ovrspec { return getMemberSimple( memb ); }
23 #define mImplSimpleMonitoredSet_impl(fnnm,typ,memb,chgtyp,ovrspec) \
24 void fnnm( typ _set_to_ ) ovrspec \
25 { setMemberSimple( memb, _set_to_, chgtyp, cUnspecChgID() ); }
28 #define mImplSimpleMonitoredGet( fnnm, typ, memb ) \
29 mImplSimpleMonitoredGet_impl(fnnm,typ,memb,)
30 #define mImplSimpleMonitoredGetOverride( fnnm, typ, memb ) \
31 mImplSimpleMonitoredGet_impl(fnnm,typ,memb,override)
34 #define mImplSimpleMonitoredSet(fnnm,typ,memb,chgtyp) \
35 mImplSimpleMonitoredSet_impl(fnnm,typ,memb,chgtyp,)
36 #define mImplSimpleMonitoredSetOverride(fnnm,typ,memb,chgtyp) \
37 mImplSimpleMonitoredSet_impl(fnnm,typ,memb,chgtyp,override)
48 #define mImplSimpleMonitoredGetSet(pfx,fnnmget,fnnmset,typ,memb,chgtyp) \
49 pfx mImplSimpleMonitoredGet(fnnmget,typ,memb) \
50 pfx mImplSimpleMonitoredSet(fnnmset,const typ&,memb,chgtyp)
54 #define mLockMonitorable4Read(obj) \
55 MonitoredObject::AccessLocker accesslocker_( obj )
56 #define mLockMonitorable4Write(obj) \
57 MonitoredObject::AccessLocker accesslocker_( obj, false )
58 #define mMonitorableLock2Write(obj) accesslocker_.convertToWrite()
59 #define mMonitorableReLock(obj) accesslocker_.reLock()
60 #define mMonitorableUnlockAllAccess(obj) accesslocker_.unlockNow()
61 #define mMonitorableAccessLocker(obj) accesslocker_
62 #define mSendMonitorableChgNotif(obj,typ,id) \
63 (obj).sendChgNotif(accesslocker_,typ,id)
64 #define mSendMonitorableEntireObjChgNotif(obj) \
65 mSendMonitorableChgNotif(obj,MonitoredObject::cEntireObjectChange(), \
66 MonitoredObject::cEntireObjectChgID())
69 #define mLock4Read() mLockMonitorable4Read(*this)
70 #define mLock4Write() mLockMonitorable4Write(*this)
71 #define mLock2Write() mMonitorableLock2Write(*this)
72 #define mReLock() mMonitorableReLock(*this)
73 #define mUnlockAllAccess() mMonitorableUnlockAllAccess(*this)
74 #define mAccessLocker() mMonitorableAccessLocker(*this)
75 #define mSendChgNotif(typ,id) mSendMonitorableChgNotif(*this,typ,id)
76 #define mSendEntireObjChgNotif() mSendMonitorableEntireObjChgNotif(*this)
80 #define mDeclGenMonitorableAssignment(clss) \
82 void copyClassData(const clss&); \
83 ChangeType compareClassData(const clss&) const; \
85 void copyAll(const clss&); \
88 clss& operator =(const clss&); \
89 bool operator ==(const clss&) const; \
90 inline bool operator !=( const clss& oth ) const \
91 { return !(*this == oth); } \
92 clss* clone() const override { return (clss*)getClone(); } \
93 ChangeType compareWith(const MonitoredObject&) const override
114 #define mDeclAbstractMonitorableAssignment(clss) \
115 mDeclGenMonitorableAssignment(clss)
120 #define mDeclMonitorableAssignment(clss) \
121 mDeclGenMonitorableAssignment(clss); \
122 clss* getClone() const override { return new clss( *this ); }
125 #define mImplEmptyMonitorableCopyClassData( clssnm ) \
126 void clssnm::copyClassData( const clssnm& oth ) \
130 #define mImplAlwaysDifferentMonitorableCompareClassData( clssnm ) \
131 MonitoredObject::ChangeType clssnm::compareClassData( const clssnm& oth ) const \
133 return cEntireObjectChange(); \
136 #define mImplEmptyMonitorableCompare( clssnm ) \
137 MonitoredObject::ChangeType clssnm::compareClassData( const clssnm& oth ) const \
139 return cNoChange(); \
170 #define mGenImplMonitorableAssignment(pfx,clss,baseclss) \
171 pfx clss& clss::operator =( const clss& oth ) \
173 const ChangeType chgtyp = compareWith( oth ); \
174 if ( chgtyp != cNoChange() ) \
177 AccessLocker lckr( oth ); \
179 mSendChgNotif( chgtyp, cUnspecChgID() ); \
184 pfx bool clss::operator ==( const clss& oth ) const \
187 return compareWith( oth ) == cNoChange(); \
190 pfx void clss::copyAll( const clss& oth ) \
192 baseclss::copyAll( oth ); \
193 AccessLocker lckr( oth ); \
194 copyClassData( oth ); \
197 pfx MonitoredObject::ChangeType clss::compareWith( const MonitoredObject& mon ) const \
199 if ( this == &mon ) \
200 return cNoChange(); \
201 mDynamicCastGet( const clss*, oth, &mon ); \
203 return cEntireObjectChange(); \
206 AccessLocker lckr( *oth ); \
207 const ChangeType ct = compareClassData( *oth ); \
208 mUnlockAllAccess(); \
210 return ct != cNoChange() ? ct : baseclss::compareWith( *oth ); \
214 #define mImplMonitorableAssignment(clss,baseclss) \
215 mGenImplMonitorableAssignment(,clss,baseclss)
218 #define mImplMonitorableAssignmentWithNoMembers( clss, baseclss ) \
219 mImplMonitorableAssignment(clss,baseclss) \
220 mImplEmptyMonitorableCopyClassData( clss ) \
221 mImplEmptyMonitorableCompare( clss )
244 #define mStartMonitorableCompare() ChangeType chgtype = cNoChange()
246 #define mHandleMonitorableCompare( memb, val ) \
247 if ( !(memb == oth.memb) ) \
249 if ( chgtype == cNoChange() || chgtype == val ) \
252 return cEntireObjectChange(); \
255 #define mHandleMonitorableComparePtrContents( memb, val ) \
256 if ( (memb && !oth.memb) || (!memb && oth.memb) || !(*memb == *oth.memb) ) \
258 if ( chgtype == cNoChange() || chgtype == val ) \
261 return cEntireObjectChange(); \
264 #define mDeliverMonitorableCompare() return chgtype;
269 #define mDeliverSingCondMonitorableCompare(nochgcond,chgtype) \
270 return (nochgcond) ? cNoChange() : chgtype
275 #define mDeliverYesNoMonitorableCompare(nochgcond) \
276 mDeliverSingCondMonitorableCompare( nochgcond, cEntireObjectChange() )
291 template <
class TMember,
class TSetTo>
int64_t IDType
Definition: monitoredobject.h:85
int ChangeType
Definition: monitoredobject.h:84
#define mLock2Write()
Definition: monitor.h:71
#define mSendChgNotif(typ, id)
Definition: monitor.h:75
T getMemberSimple(const T &) const
the get function used by mImplSimpleMonitoredGet
Definition: monitor.h:282
void setMemberSimple(TMember &, TSetTo, ChangeType, IDType)
the set function used by mImplSimpleMonitoredSet
Definition: monitor.h:292
#define mLock4Read()
Definition: monitor.h:69
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021