Kaydet (Commit) ae91e583 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Unroll sole use of SV_IMPL/DECL_LOCK

Change-Id: I0d4691f700a415d0376e2bc346bc51fbf6a000b2
üst 97cfb1fe
...@@ -720,8 +720,51 @@ public: ...@@ -720,8 +720,51 @@ public:
SV_DECL_REF(SfxObjectShell) SV_DECL_REF(SfxObjectShell)
#endif #endif
SV_DECL_LOCK(SfxObjectShell) class SfxObjectShellLock
SV_IMPL_LOCK(SfxObjectShell) {
protected:
SfxObjectShell * pObj;
public:
inline SfxObjectShellLock() { pObj = 0; }
inline SfxObjectShellLock( const SfxObjectShellLock & rObj );
inline SfxObjectShellLock( SfxObjectShell * pObjP );
inline void Clear();
inline ~SfxObjectShellLock();
inline SfxObjectShellLock & operator = ( const SfxObjectShellLock & rObj );
inline SfxObjectShellLock & operator = ( SfxObjectShell * pObj );
inline bool Is() const { return pObj != NULL; }
inline SfxObjectShell * operator & () const { return pObj; }
inline SfxObjectShell * operator -> () const { return pObj; }
inline SfxObjectShell & operator * () const { return *pObj; }
inline operator SfxObjectShell * () const { return pObj; }
};
inline SfxObjectShellLock::SfxObjectShellLock( const SfxObjectShellLock & rObj )
{ pObj = rObj.pObj; if( pObj ) { pObj->OwnerLock( true ); } }
inline SfxObjectShellLock::SfxObjectShellLock( SfxObjectShell * pObjP )
{ pObj = pObjP; if( pObj ) { pObj->OwnerLock( true ); } }
inline void SfxObjectShellLock::Clear()
{
if( pObj )
{
SfxObjectShell* const pRefObj = pObj;
pObj = 0;
pRefObj->OwnerLock( false );
}
}
inline SfxObjectShellLock::~SfxObjectShellLock()
{ if( pObj ) { pObj->OwnerLock( false ); } }
inline SfxObjectShellLock & SfxObjectShellLock::
operator = ( const SfxObjectShellLock & rObj )
{
if( rObj.pObj ) rObj.pObj->OwnerLock( true );
SfxObjectShell* const pRefObj = pObj;
pObj = rObj.pObj;
if( pRefObj ) { pRefObj->OwnerLock( false ); }
return *this;
}
inline SfxObjectShellLock & SfxObjectShellLock::operator = ( SfxObjectShell * pObjP )
{ return *this = SfxObjectShellLock( pObjP ); }
SV_IMPL_REF(SfxObjectShell) SV_IMPL_REF(SfxObjectShell)
class AutoReloadTimer_Impl : public Timer class AutoReloadTimer_Impl : public Timer
......
...@@ -22,77 +22,55 @@ ...@@ -22,77 +22,55 @@
#include <tools/toolsdllapi.h> #include <tools/toolsdllapi.h>
#include <vector> #include <vector>
#define PRV_SV_IMPL_REF_COUNTERS( ClassName, Ref, AddRef, AddNextRef, ReleaseRef, pRefbase ) \ #define SV_DECL_REF( ClassName ) \
class ClassName; \
class ClassName##Ref \
{ \
protected: \
ClassName * pObj; \
public: \
inline ClassName##Ref() { pObj = 0; } \
inline ClassName##Ref( const ClassName##Ref & rObj ); \
inline ClassName##Ref( ClassName * pObjP ); \
inline void Clear(); \
inline ~ClassName##Ref(); \
inline ClassName##Ref & operator = ( const ClassName##Ref & rObj ); \
inline ClassName##Ref & operator = ( ClassName * pObj ); \
inline bool Is() const { return pObj != NULL; } \
inline ClassName * operator & () const { return pObj; } \
inline ClassName * operator -> () const { return pObj; } \
inline ClassName & operator * () const { return *pObj; } \
inline operator ClassName * () const { return pObj; } \
};
#define SV_IMPL_REF( ClassName ) \
inline ClassName##Ref::ClassName##Ref( const ClassName##Ref & rObj ) \ inline ClassName##Ref::ClassName##Ref( const ClassName##Ref & rObj ) \
{ pObj = rObj.pObj; if( pObj ) { pRefbase->AddNextRef; } } \ { pObj = rObj.pObj; if( pObj ) { pObj->AddNextRef(); } } \
inline ClassName##Ref::ClassName##Ref( ClassName * pObjP ) \ inline ClassName##Ref::ClassName##Ref( ClassName * pObjP ) \
{ pObj = pObjP; if( pObj ) { pRefbase->AddRef; } } \ { pObj = pObjP; if( pObj ) { pObj->AddRef(); } } \
inline void ClassName##Ref::Clear() \ inline void ClassName##Ref::Clear() \
{ \ { \
if( pObj ) \ if( pObj ) \
{ \ { \
ClassName* const pRefObj = pRefbase; \ ClassName* const pRefObj = pObj; \
pObj = 0; \ pObj = 0; \
pRefObj->ReleaseRef; \ pRefObj->ReleaseReference(); \
} \ } \
} \ } \
inline ClassName##Ref::~ClassName##Ref() \ inline ClassName##Ref::~ClassName##Ref() \
{ if( pObj ) { pRefbase->ReleaseRef; } } \ { if( pObj ) { pObj->ReleaseReference(); } } \
inline ClassName##Ref & ClassName##Ref:: \ inline ClassName##Ref & ClassName##Ref:: \
operator = ( const ClassName##Ref & rObj ) \ operator = ( const ClassName##Ref & rObj ) \
{ \ { \
if( rObj.pObj ) rObj.pRefbase->AddNextRef; \ if( rObj.pObj ) rObj.pObj->AddNextRef(); \
ClassName* const pRefObj = pRefbase; \ ClassName* const pRefObj = pObj; \
pObj = rObj.pObj; \ pObj = rObj.pObj; \
if( pRefObj ) { pRefObj->ReleaseRef; } \ if( pRefObj ) { pRefObj->ReleaseReference(); } \
return *this; \ return *this; \
} \ } \
inline ClassName##Ref & ClassName##Ref::operator = ( ClassName * pObjP ) \ inline ClassName##Ref & ClassName##Ref::operator = ( ClassName * pObjP ) \
{ return *this = ClassName##Ref( pObjP ); } { return *this = ClassName##Ref( pObjP ); }
#define PRV_SV_DECL_REF_LOCK(ClassName, Ref) \
protected: \
ClassName * pObj; \
public: \
inline ClassName##Ref() { pObj = 0; } \
inline ClassName##Ref( const ClassName##Ref & rObj ); \
inline ClassName##Ref( ClassName * pObjP ); \
inline void Clear(); \
inline ~ClassName##Ref(); \
inline ClassName##Ref & operator = ( const ClassName##Ref & rObj ); \
inline ClassName##Ref & operator = ( ClassName * pObj ); \
inline bool Is() const { return pObj != NULL; } \
inline ClassName * operator & () const { return pObj; } \
inline ClassName * operator -> () const { return pObj; } \
inline ClassName & operator * () const { return *pObj; } \
inline operator ClassName * () const { return pObj; }
#define PRV_SV_DECL_REF( ClassName ) \
PRV_SV_DECL_REF_LOCK( ClassName, Ref )
#define SV_DECL_REF( ClassName ) \
class ClassName; \
class ClassName##Ref \
{ \
PRV_SV_DECL_REF( ClassName ) \
};
#define SV_DECL_LOCK( ClassName ) \
class ClassName; \
class ClassName##Lock \
{ \
PRV_SV_DECL_REF_LOCK( ClassName, Lock ) \
};
#define SV_IMPL_REF( ClassName ) \
PRV_SV_IMPL_REF_COUNTERS( ClassName, Ref, AddRef(), AddNextRef(),\
ReleaseReference(), pObj )
#define SV_IMPL_LOCK( ClassName ) \
PRV_SV_IMPL_REF_COUNTERS( ClassName, Lock, OwnerLock( true ), \
OwnerLock( true ), OwnerLock( false ), \
pObj )
#define SV_DECL_IMPL_REF(ClassName) \ #define SV_DECL_IMPL_REF(ClassName) \
SV_DECL_REF(ClassName) \ SV_DECL_REF(ClassName) \
SV_IMPL_REF(ClassName) SV_IMPL_REF(ClassName)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment