[Libreoffice-commits] core.git: sc/inc sc/source
Noel Grandin
noel.grandin at collabora.co.uk
Wed Oct 18 12:41:21 UTC 2017
sc/inc/dapiuno.hxx | 6 +--
sc/inc/textuno.hxx | 14 ++++----
sc/source/ui/unoobj/cellsuno.cxx | 4 --
sc/source/ui/unoobj/chart2uno.cxx | 4 --
sc/source/ui/unoobj/dapiuno.cxx | 61 ++++++++++++++++----------------------
sc/source/ui/unoobj/textuno.cxx | 10 +-----
6 files changed, 41 insertions(+), 58 deletions(-)
New commits:
commit 159b26e419f1642abe84d7bdc6b7de52fb1b2fb6
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Wed Oct 18 12:40:15 2017 +0200
use rtl::Reference in sc/../uno/*
instead of manual reference counting
Change-Id: I60798316f2b63800a9f539cb719305c00d91ecc5
Reviewed-on: https://gerrit.libreoffice.org/43491
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sc/inc/dapiuno.hxx b/sc/inc/dapiuno.hxx
index ab766f7e60f2..1f183501c9ba 100644
--- a/sc/inc/dapiuno.hxx
+++ b/sc/inc/dapiuno.hxx
@@ -336,7 +336,7 @@ protected:
ScDocShell* GetDocShell() const;
protected:
- ScDataPilotDescriptorBase& mrParent;
+ rtl::Reference<ScDataPilotDescriptorBase> mxParent;
ScFieldIdentifier maFieldId;
private:
@@ -615,7 +615,7 @@ public:
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
private:
- ScDataPilotFieldGroupsObj& mrParent;
+ rtl::Reference<ScDataPilotFieldGroupsObj> mxParent;
OUString maGroupName;
};
@@ -642,7 +642,7 @@ public:
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
private:
- ScDataPilotFieldGroupObj& mrParent;
+ rtl::Reference<ScDataPilotFieldGroupObj> mxParent;
OUString maName;
};
diff --git a/sc/inc/textuno.hxx b/sc/inc/textuno.hxx
index 0a33daa6a3f0..0d72c9b95008 100644
--- a/sc/inc/textuno.hxx
+++ b/sc/inc/textuno.hxx
@@ -217,14 +217,14 @@ public:
class ScCellTextCursor : public SvxUnoTextCursor
{
- ScCellObj& rTextObj;
+ rtl::Reference<ScCellObj> mxTextObj;
public:
ScCellTextCursor(const ScCellTextCursor& rOther);
ScCellTextCursor(ScCellObj& rText);
- virtual ~ScCellTextCursor() throw() override;
+ virtual ~ScCellTextCursor() throw() override;
- ScCellObj& GetCellObj() const { return rTextObj; }
+ ScCellObj& GetCellObj() const { return *mxTextObj; }
// SvxUnoTextCursor methods reimplemented here:
virtual css::uno::Reference< css::text::XText > SAL_CALL
@@ -248,7 +248,7 @@ private:
public:
ScHeaderFooterTextCursor(rtl::Reference<ScHeaderFooterTextObj> const & rText);
- virtual ~ScHeaderFooterTextCursor() throw() override;
+ virtual ~ScHeaderFooterTextCursor() throw() override;
// SvxUnoTextCursor methods reimplemented here:
virtual css::uno::Reference< css::text::XText > SAL_CALL
@@ -314,7 +314,7 @@ class ScEditEngineTextObj : public ScSimpleEditSourceHelper, public SvxUnoText
{
public:
ScEditEngineTextObj();
- virtual ~ScEditEngineTextObj() throw() override;
+ virtual ~ScEditEngineTextObj() throw() override;
void SetText( const EditTextObject& rTextObject );
EditTextObject* CreateTextObject();
@@ -359,8 +359,8 @@ public:
class ScCellTextObj : public ScCellTextData, public SvxUnoText
{
public:
- ScCellTextObj(ScDocShell* pDocSh, const ScAddress& rP);
- virtual ~ScCellTextObj() throw() override;
+ ScCellTextObj(ScDocShell* pDocSh, const ScAddress& rP);
+ virtual ~ScCellTextObj() throw() override;
};
#endif
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index ba3e602c3609..d8b4b1619276 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -3397,7 +3397,7 @@ void SAL_CALL ScCellRangesBase::removeModifyListener( const uno::Reference<util:
if ( aRanges.empty() )
throw uno::RuntimeException();
- acquire(); // in case the listeners have the last ref - released below
+ rtl::Reference<ScCellRangesBase> aSelfHold(this); // in case the listeners have the last ref
sal_uInt16 nCount = aValueListeners.size();
for ( sal_uInt16 n=nCount; n--; )
@@ -3418,8 +3418,6 @@ void SAL_CALL ScCellRangesBase::removeModifyListener( const uno::Reference<util:
break;
}
}
-
- release(); // might delete this object
}
// XCellRangesQuery
diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx
index 31b210d4c5d9..0b9274d38633 100644
--- a/sc/source/ui/unoobj/chart2uno.cxx
+++ b/sc/source/ui/unoobj/chart2uno.cxx
@@ -3273,7 +3273,7 @@ void SAL_CALL ScChart2DataSequence::removeModifyListener( const uno::Reference<
if (m_aTokens.empty())
return;
- acquire(); // in case the listeners have the last ref - released below
+ rtl::Reference<ScChart2DataSequence> aSelfHold(this); // in case the listeners have the last ref
sal_uInt16 nCount = m_aValueListeners.size();
for ( sal_uInt16 n=nCount; n--; )
@@ -3301,8 +3301,6 @@ void SAL_CALL ScChart2DataSequence::removeModifyListener( const uno::Reference<
break;
}
}
-
- release(); // might delete this object
}
// DataSequence XPropertySet -------------------------------------------------
diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx
index 3cf9a3261cd9..657d6b763901 100644
--- a/sc/source/ui/unoobj/dapiuno.cxx
+++ b/sc/source/ui/unoobj/dapiuno.cxx
@@ -1278,7 +1278,7 @@ void SAL_CALL ScDataPilotTableObj::removeModifyListener( const uno::Reference<ut
{
SolarMutexGuard aGuard;
- acquire(); // in case the listeners have the last ref - released below
+ rtl::Reference<ScDataPilotTableObj> aSelfHold(this); // in case the listeners have the last ref
sal_uInt16 nCount = aModifyListeners.size();
for ( sal_uInt16 n=nCount; n--; )
@@ -1296,8 +1296,6 @@ void SAL_CALL ScDataPilotTableObj::removeModifyListener( const uno::Reference<ut
break;
}
}
-
- release(); // might delete this object
}
void ScDataPilotTableObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
@@ -1400,31 +1398,28 @@ void SAL_CALL ScDataPilotDescriptor::setTag( const OUString& aNewTag )
}
ScDataPilotChildObjBase::ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent ) :
- mrParent( rParent )
+ mxParent( &rParent )
{
- mrParent.acquire();
}
ScDataPilotChildObjBase::ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId ) :
- mrParent( rParent ),
+ mxParent( &rParent ),
maFieldId( rFieldId )
{
- mrParent.acquire();
}
ScDataPilotChildObjBase::~ScDataPilotChildObjBase()
{
- mrParent.release();
}
ScDPObject* ScDataPilotChildObjBase::GetDPObject() const
{
- return mrParent.GetDPObject();
+ return mxParent->GetDPObject();
}
void ScDataPilotChildObjBase::SetDPObject( ScDPObject* pDPObject )
{
- mrParent.SetDPObject( pDPObject );
+ mxParent->SetDPObject( pDPObject );
}
ScDPSaveDimension* ScDataPilotChildObjBase::GetDPDimension( ScDPObject** ppDPObject ) const
@@ -1484,7 +1479,7 @@ Reference< XMembersAccess > ScDataPilotChildObjBase::GetMembers() const
ScDocShell* ScDataPilotChildObjBase::GetDocShell() const
{
- return mrParent.GetDocShell();
+ return mxParent->GetDocShell();
}
ScDataPilotFieldsObj::ScDataPilotFieldsObj( ScDataPilotDescriptorBase& rParent ) :
@@ -1649,7 +1644,7 @@ ScDataPilotFieldObj* ScDataPilotFieldsObj::GetObjectByIndex_Impl( sal_Int32 nInd
{
ScFieldIdentifier aFieldId;
if (lcl_GetFieldDataByIndex( pObj->GetSource(), maOrient, nIndex, aFieldId ))
- return new ScDataPilotFieldObj( mrParent, aFieldId, maOrient );
+ return new ScDataPilotFieldObj( *mxParent, aFieldId, maOrient );
}
return nullptr;
}
@@ -1660,7 +1655,7 @@ ScDataPilotFieldObj* ScDataPilotFieldsObj::GetObjectByName_Impl(const OUString&
{
ScFieldIdentifier aFieldId;
if (lcl_GetFieldDataByName( pDPObj, aName, aFieldId ))
- return new ScDataPilotFieldObj( mrParent, aFieldId, maOrient );
+ return new ScDataPilotFieldObj( *mxParent, aFieldId, maOrient );
}
return nullptr;
}
@@ -2026,7 +2021,7 @@ Reference<XIndexAccess> SAL_CALL ScDataPilotFieldObj::getItems()
{
SolarMutexGuard aGuard;
if (!mxItems.is())
- mxItems.set( new ScDataPilotItemsObj( mrParent, maFieldId ) );
+ mxItems.set( new ScDataPilotItemsObj( *mxParent, maFieldId ) );
return mxItems;
}
@@ -2365,7 +2360,7 @@ DataPilotFieldGroupInfo ScDataPilotFieldObj::getGroupInfo()
// find source field
try
{
- Reference< XNameAccess > xFields( mrParent.getDataPilotFields(), UNO_QUERY_THROW );
+ Reference< XNameAccess > xFields( mxParent->getDataPilotFields(), UNO_QUERY_THROW );
aInfo.SourceField.set( xFields->getByName( pGroupDim->GetSourceDimName() ), UNO_QUERY );
}
catch( Exception& )
@@ -2663,7 +2658,7 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
// if new grouping field has been created (on first group), return it
if( !sNewDim.isEmpty() )
{
- Reference< XNameAccess > xFields(mrParent.getDataPilotFields(), UNO_QUERY);
+ Reference< XNameAccess > xFields(mxParent->getDataPilotFields(), UNO_QUERY);
if (xFields.is())
{
try
@@ -2788,7 +2783,7 @@ Reference < XDataPilotField > SAL_CALL ScDataPilotFieldObj::createDateGroup( con
if( !aGroupDimName.isEmpty() )
try
{
- Reference< XNameAccess > xFields( mrParent.getDataPilotFields(), UNO_QUERY_THROW );
+ Reference< XNameAccess > xFields( mxParent->getDataPilotFields(), UNO_QUERY_THROW );
xRet.set( xFields->getByName( aGroupDimName ), UNO_QUERY );
}
catch( Exception& )
@@ -3026,15 +3021,13 @@ OUString lclExtractMember( const Any& rElement )
} // namespace
ScDataPilotFieldGroupObj::ScDataPilotFieldGroupObj( ScDataPilotFieldGroupsObj& rParent, const OUString& rGroupName ) :
- mrParent( rParent ),
+ mxParent( &rParent ),
maGroupName( rGroupName )
{
- mrParent.acquire();
}
ScDataPilotFieldGroupObj::~ScDataPilotFieldGroupObj()
{
- mrParent.release();
}
// XNameAccess
@@ -3042,7 +3035,7 @@ ScDataPilotFieldGroupObj::~ScDataPilotFieldGroupObj()
Any SAL_CALL ScDataPilotFieldGroupObj::getByName( const OUString& rName )
{
SolarMutexGuard aGuard;
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
ScFieldGroupMembers::iterator aIt = ::std::find( rMembers.begin(), rMembers.end(), rName );
if( aIt == rMembers.end() )
throw NoSuchElementException("Name \"" + rName + "\" not found", static_cast<cppu::OWeakObject*>(this));
@@ -3052,13 +3045,13 @@ Any SAL_CALL ScDataPilotFieldGroupObj::getByName( const OUString& rName )
Sequence< OUString > SAL_CALL ScDataPilotFieldGroupObj::getElementNames()
{
SolarMutexGuard aGuard;
- return ::comphelper::containerToSequence( mrParent.getFieldGroup( maGroupName ).maMembers );
+ return ::comphelper::containerToSequence( mxParent->getFieldGroup( maGroupName ).maMembers );
}
sal_Bool SAL_CALL ScDataPilotFieldGroupObj::hasByName( const OUString& rName )
{
SolarMutexGuard aGuard;
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
return ::std::find( rMembers.begin(), rMembers.end(), rName ) != rMembers.end();
}
@@ -3075,7 +3068,7 @@ void SAL_CALL ScDataPilotFieldGroupObj::replaceByName( const OUString& rName, co
if( rName == aNewName )
return;
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
ScFieldGroupMembers::iterator aOldIt = ::std::find( rMembers.begin(), rMembers.end(), rName );
ScFieldGroupMembers::iterator aNewIt = ::std::find( rMembers.begin(), rMembers.end(), aNewName );
if( aOldIt == rMembers.end() )
@@ -3095,7 +3088,7 @@ void SAL_CALL ScDataPilotFieldGroupObj::insertByName( const OUString& rName, con
if( rName.isEmpty() )
throw IllegalArgumentException("Name is empty", static_cast<cppu::OWeakObject*>(this), 0);
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
ScFieldGroupMembers::iterator aIt = ::std::find( rMembers.begin(), rMembers.end(), rName );
if( aIt != rMembers.end() )
throw IllegalArgumentException("Name \"" + rName + "\" already exists", static_cast<cppu::OWeakObject*>(this), 0);
@@ -3108,7 +3101,7 @@ void SAL_CALL ScDataPilotFieldGroupObj::removeByName( const OUString& rName )
if( rName.isEmpty() )
throw IllegalArgumentException("Name is empty", static_cast<cppu::OWeakObject*>(this), 0);
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
ScFieldGroupMembers::iterator aIt = ::std::find( rMembers.begin(), rMembers.end(), rName );
if( aIt == rMembers.end() )
throw NoSuchElementException("Name \"" + rName + "\" not found", static_cast<cppu::OWeakObject*>(this));
@@ -3120,13 +3113,13 @@ void SAL_CALL ScDataPilotFieldGroupObj::removeByName( const OUString& rName )
sal_Int32 SAL_CALL ScDataPilotFieldGroupObj::getCount()
{
SolarMutexGuard aGuard;
- return static_cast< sal_Int32 >( mrParent.getFieldGroup( maGroupName ).maMembers.size() );
+ return static_cast< sal_Int32 >( mxParent->getFieldGroup( maGroupName ).maMembers.size() );
}
Any SAL_CALL ScDataPilotFieldGroupObj::getByIndex( sal_Int32 nIndex )
{
SolarMutexGuard aGuard;
- ScFieldGroupMembers& rMembers = mrParent.getFieldGroup( maGroupName ).maMembers;
+ ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName ).maMembers;
if ((nIndex < 0) || (nIndex >= static_cast< sal_Int32 >( rMembers.size() )))
throw IndexOutOfBoundsException();
return Any( Reference< XNamed >( new ScDataPilotFieldGroupItemObj( *this, rMembers[ nIndex ] ) ) );
@@ -3151,7 +3144,7 @@ uno::Type SAL_CALL ScDataPilotFieldGroupObj::getElementType()
sal_Bool SAL_CALL ScDataPilotFieldGroupObj::hasElements()
{
SolarMutexGuard aGuard;
- return !mrParent.getFieldGroup( maGroupName ).maMembers.empty();
+ return !mxParent->getFieldGroup( maGroupName ).maMembers.empty();
}
// XNamed
@@ -3165,21 +3158,19 @@ OUString SAL_CALL ScDataPilotFieldGroupObj::getName()
void SAL_CALL ScDataPilotFieldGroupObj::setName( const OUString& rName )
{
SolarMutexGuard aGuard;
- mrParent.renameFieldGroup( maGroupName, rName );
+ mxParent->renameFieldGroup( maGroupName, rName );
// if call to renameFieldGroup() did not throw, remember the new name
maGroupName = rName;
}
ScDataPilotFieldGroupItemObj::ScDataPilotFieldGroupItemObj( ScDataPilotFieldGroupObj& rParent, const OUString& rName ) :
- mrParent( rParent ),
+ mxParent( &rParent ),
maName( rName )
{
- mrParent.acquire();
}
ScDataPilotFieldGroupItemObj::~ScDataPilotFieldGroupItemObj()
{
- mrParent.release();
}
// XNamed
@@ -3193,7 +3184,7 @@ OUString SAL_CALL ScDataPilotFieldGroupItemObj::getName()
void SAL_CALL ScDataPilotFieldGroupItemObj::setName( const OUString& rName )
{
SolarMutexGuard aGuard;
- mrParent.replaceByName( maName, Any( rName ) );
+ mxParent->replaceByName( maName, Any( rName ) );
// if call to replaceByName() did not throw, remember the new name
maName = rName;
}
@@ -3212,7 +3203,7 @@ ScDataPilotItemsObj::~ScDataPilotItemsObj()
ScDataPilotItemObj* ScDataPilotItemsObj::GetObjectByIndex_Impl( sal_Int32 nIndex ) const
{
return ((0 <= nIndex) && (nIndex < GetMemberCount())) ?
- new ScDataPilotItemObj( mrParent, maFieldId, nIndex ) : nullptr;
+ new ScDataPilotItemObj( *mxParent, maFieldId, nIndex ) : nullptr;
}
// XNameAccess
diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx
index a119a0d85056..189d41cac82d 100644
--- a/sc/source/ui/unoobj/textuno.cxx
+++ b/sc/source/ui/unoobj/textuno.cxx
@@ -568,29 +568,25 @@ sal_Bool SAL_CALL ScHeaderFooterTextObj::hasElements()
ScCellTextCursor::ScCellTextCursor(const ScCellTextCursor& rOther) :
SvxUnoTextCursor( rOther ),
- rTextObj( rOther.rTextObj )
+ mxTextObj( rOther.mxTextObj )
{
- rTextObj.acquire();
}
ScCellTextCursor::ScCellTextCursor(ScCellObj& rText) :
SvxUnoTextCursor( rText.GetUnoText() ),
- rTextObj( rText )
+ mxTextObj( &rText )
{
- rTextObj.acquire();
}
ScCellTextCursor::~ScCellTextCursor() throw()
{
- rTextObj.release();
}
// SvxUnoTextCursor methods reimplemented here to return the right objects:
uno::Reference<text::XText> SAL_CALL ScCellTextCursor::getText()
{
- SolarMutexGuard aGuard;
- return &rTextObj;
+ return mxTextObj.get();
}
uno::Reference<text::XTextRange> SAL_CALL ScCellTextCursor::getStart()
More information about the Libreoffice-commits
mailing list