Kaydet (Commit) 8eab42dd authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in SvxBoxItem

Change-Id: I0702a25c765fc8781b65320f44c0e0c3c56269a7
Reviewed-on: https://gerrit.libreoffice.org/48408Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 3199d25a
...@@ -1356,20 +1356,15 @@ SvxBoxItem::SvxBoxItem( const SvxBoxItem& rCpy ) : ...@@ -1356,20 +1356,15 @@ SvxBoxItem::SvxBoxItem( const SvxBoxItem& rCpy ) :
bRemoveAdjCellBorder ( rCpy.bRemoveAdjCellBorder ) bRemoveAdjCellBorder ( rCpy.bRemoveAdjCellBorder )
{ {
pTop = rCpy.GetTop() ? new SvxBorderLine( *rCpy.GetTop() ) : nullptr; pTop.reset( rCpy.GetTop() ? new SvxBorderLine( *rCpy.GetTop() ) : nullptr );
pBottom = rCpy.GetBottom() ? new SvxBorderLine( *rCpy.GetBottom() ) : nullptr; pBottom.reset( rCpy.GetBottom() ? new SvxBorderLine( *rCpy.GetBottom() ) : nullptr );
pLeft = rCpy.GetLeft() ? new SvxBorderLine( *rCpy.GetLeft() ) : nullptr; pLeft.reset( rCpy.GetLeft() ? new SvxBorderLine( *rCpy.GetLeft() ) : nullptr );
pRight = rCpy.GetRight() ? new SvxBorderLine( *rCpy.GetRight() ) : nullptr; pRight.reset( rCpy.GetRight() ? new SvxBorderLine( *rCpy.GetRight() ) : nullptr );
} }
SvxBoxItem::SvxBoxItem( const sal_uInt16 nId ) : SvxBoxItem::SvxBoxItem( const sal_uInt16 nId ) :
SfxPoolItem( nId ), SfxPoolItem( nId ),
pTop ( nullptr ),
pBottom ( nullptr ),
pLeft ( nullptr ),
pRight ( nullptr ),
nTopDist ( 0 ), nTopDist ( 0 ),
nBottomDist ( 0 ), nBottomDist ( 0 ),
nLeftDist ( 0 ), nLeftDist ( 0 ),
...@@ -1381,10 +1376,6 @@ SvxBoxItem::SvxBoxItem( const sal_uInt16 nId ) : ...@@ -1381,10 +1376,6 @@ SvxBoxItem::SvxBoxItem( const sal_uInt16 nId ) :
SvxBoxItem::~SvxBoxItem() SvxBoxItem::~SvxBoxItem()
{ {
delete pTop;
delete pBottom;
delete pLeft;
delete pRight;
} }
...@@ -1403,9 +1394,9 @@ SvxBoxItem& SvxBoxItem::operator=( const SvxBoxItem& rBox ) ...@@ -1403,9 +1394,9 @@ SvxBoxItem& SvxBoxItem::operator=( const SvxBoxItem& rBox )
} }
inline bool CmpBrdLn( const SvxBorderLine* pBrd1, const SvxBorderLine* pBrd2 ) inline bool CmpBrdLn( const std::unique_ptr<SvxBorderLine> & pBrd1, const SvxBorderLine* pBrd2 )
{ {
if( pBrd1 == pBrd2 ) if( pBrd1.get() == pBrd2 )
return true; return true;
if( pBrd1 == nullptr || pBrd2 == nullptr) if( pBrd1 == nullptr || pBrd2 == nullptr)
return false; return false;
...@@ -2075,16 +2066,16 @@ const SvxBorderLine *SvxBoxItem::GetLine( SvxBoxItemLine nLine ) const ...@@ -2075,16 +2066,16 @@ const SvxBorderLine *SvxBoxItem::GetLine( SvxBoxItemLine nLine ) const
switch ( nLine ) switch ( nLine )
{ {
case SvxBoxItemLine::TOP: case SvxBoxItemLine::TOP:
pRet = pTop; pRet = pTop.get();
break; break;
case SvxBoxItemLine::BOTTOM: case SvxBoxItemLine::BOTTOM:
pRet = pBottom; pRet = pBottom.get();
break; break;
case SvxBoxItemLine::LEFT: case SvxBoxItemLine::LEFT:
pRet = pLeft; pRet = pLeft.get();
break; break;
case SvxBoxItemLine::RIGHT: case SvxBoxItemLine::RIGHT:
pRet = pRight; pRet = pRight.get();
break; break;
default: default:
OSL_FAIL( "wrong line" ); OSL_FAIL( "wrong line" );
...@@ -2097,28 +2088,23 @@ const SvxBorderLine *SvxBoxItem::GetLine( SvxBoxItemLine nLine ) const ...@@ -2097,28 +2088,23 @@ const SvxBorderLine *SvxBoxItem::GetLine( SvxBoxItemLine nLine ) const
void SvxBoxItem::SetLine( const SvxBorderLine* pNew, SvxBoxItemLine nLine ) void SvxBoxItem::SetLine( const SvxBorderLine* pNew, SvxBoxItemLine nLine )
{ {
SvxBorderLine* pTmp = pNew ? new SvxBorderLine( *pNew ) : nullptr; std::unique_ptr<SvxBorderLine> pTmp( pNew ? new SvxBorderLine( *pNew ) : nullptr );
switch ( nLine ) switch ( nLine )
{ {
case SvxBoxItemLine::TOP: case SvxBoxItemLine::TOP:
delete pTop; pTop = std::move( pTmp );
pTop = pTmp;
break; break;
case SvxBoxItemLine::BOTTOM: case SvxBoxItemLine::BOTTOM:
delete pBottom; pBottom = std::move( pTmp );
pBottom = pTmp;
break; break;
case SvxBoxItemLine::LEFT: case SvxBoxItemLine::LEFT:
delete pLeft; pLeft = std::move( pTmp );
pLeft = pTmp;
break; break;
case SvxBoxItemLine::RIGHT: case SvxBoxItemLine::RIGHT:
delete pRight; pRight = std::move( pTmp );
pRight = pTmp;
break; break;
default: default:
delete pTmp;
OSL_FAIL( "wrong line" ); OSL_FAIL( "wrong line" );
} }
} }
...@@ -2192,16 +2178,16 @@ sal_uInt16 SvxBoxItem::CalcLineWidth( SvxBoxItemLine nLine ) const ...@@ -2192,16 +2178,16 @@ sal_uInt16 SvxBoxItem::CalcLineWidth( SvxBoxItemLine nLine ) const
switch ( nLine ) switch ( nLine )
{ {
case SvxBoxItemLine::TOP: case SvxBoxItemLine::TOP:
pTmp = pTop; pTmp = pTop.get();
break; break;
case SvxBoxItemLine::BOTTOM: case SvxBoxItemLine::BOTTOM:
pTmp = pBottom; pTmp = pBottom.get();
break; break;
case SvxBoxItemLine::LEFT: case SvxBoxItemLine::LEFT:
pTmp = pLeft; pTmp = pLeft.get();
break; break;
case SvxBoxItemLine::RIGHT: case SvxBoxItemLine::RIGHT:
pTmp = pRight; pTmp = pRight.get();
break; break;
default: default:
OSL_FAIL( "wrong line" ); OSL_FAIL( "wrong line" );
...@@ -2220,19 +2206,19 @@ sal_uInt16 SvxBoxItem::CalcLineSpace( SvxBoxItemLine nLine, bool bEvenIfNoLine ) ...@@ -2220,19 +2206,19 @@ sal_uInt16 SvxBoxItem::CalcLineSpace( SvxBoxItemLine nLine, bool bEvenIfNoLine )
switch ( nLine ) switch ( nLine )
{ {
case SvxBoxItemLine::TOP: case SvxBoxItemLine::TOP:
pTmp = pTop; pTmp = pTop.get();
nDist = nTopDist; nDist = nTopDist;
break; break;
case SvxBoxItemLine::BOTTOM: case SvxBoxItemLine::BOTTOM:
pTmp = pBottom; pTmp = pBottom.get();
nDist = nBottomDist; nDist = nBottomDist;
break; break;
case SvxBoxItemLine::LEFT: case SvxBoxItemLine::LEFT:
pTmp = pLeft; pTmp = pLeft.get();
nDist = nLeftDist; nDist = nLeftDist;
break; break;
case SvxBoxItemLine::RIGHT: case SvxBoxItemLine::RIGHT:
pTmp = pRight; pTmp = pRight.get();
nDist = nRightDist; nDist = nRightDist;
break; break;
default: default:
...@@ -2276,8 +2262,8 @@ SvxBoxInfoItem::SvxBoxInfoItem( const SvxBoxInfoItem& rCpy ) : ...@@ -2276,8 +2262,8 @@ SvxBoxInfoItem::SvxBoxInfoItem( const SvxBoxInfoItem& rCpy ) :
mbEnableHor( rCpy.mbEnableHor ), mbEnableHor( rCpy.mbEnableHor ),
mbEnableVer( rCpy.mbEnableVer ) mbEnableVer( rCpy.mbEnableVer )
{ {
pHori = rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : nullptr; pHori.reset( rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : nullptr );
pVert = rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : nullptr; pVert.reset( rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : nullptr );
bDist = rCpy.IsDist(); bDist = rCpy.IsDist();
bMinDist = rCpy.IsMinDist(); bMinDist = rCpy.IsMinDist();
nValidFlags = rCpy.nValidFlags; nValidFlags = rCpy.nValidFlags;
...@@ -2287,17 +2273,13 @@ SvxBoxInfoItem::SvxBoxInfoItem( const SvxBoxInfoItem& rCpy ) : ...@@ -2287,17 +2273,13 @@ SvxBoxInfoItem::SvxBoxInfoItem( const SvxBoxInfoItem& rCpy ) :
SvxBoxInfoItem::~SvxBoxInfoItem() SvxBoxInfoItem::~SvxBoxInfoItem()
{ {
delete pHori;
delete pVert;
} }
SvxBoxInfoItem &SvxBoxInfoItem::operator=( const SvxBoxInfoItem& rCpy ) SvxBoxInfoItem &SvxBoxInfoItem::operator=( const SvxBoxInfoItem& rCpy )
{ {
delete pHori; pHori.reset( rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : nullptr );
delete pVert; pVert.reset( rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : nullptr );
pHori = rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : nullptr;
pVert = rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : nullptr;
mbEnableHor = rCpy.mbEnableHor; mbEnableHor = rCpy.mbEnableHor;
mbEnableVer = rCpy.mbEnableVer; mbEnableVer = rCpy.mbEnableVer;
bDist = rCpy.IsDist(); bDist = rCpy.IsDist();
...@@ -2328,21 +2310,18 @@ bool SvxBoxInfoItem::operator==( const SfxPoolItem& rAttr ) const ...@@ -2328,21 +2310,18 @@ bool SvxBoxInfoItem::operator==( const SfxPoolItem& rAttr ) const
void SvxBoxInfoItem::SetLine( const SvxBorderLine* pNew, SvxBoxInfoItemLine nLine ) void SvxBoxInfoItem::SetLine( const SvxBorderLine* pNew, SvxBoxInfoItemLine nLine )
{ {
SvxBorderLine* pTmp = pNew ? new SvxBorderLine( *pNew ) : nullptr; std::unique_ptr<SvxBorderLine> pTmp( pNew ? new SvxBorderLine( *pNew ) : nullptr );
if ( SvxBoxInfoItemLine::HORI == nLine ) if ( SvxBoxInfoItemLine::HORI == nLine )
{ {
delete pHori; pHori = std::move(pTmp);
pHori = pTmp;
} }
else if ( SvxBoxInfoItemLine::VERT == nLine ) else if ( SvxBoxInfoItemLine::VERT == nLine )
{ {
delete pVert; pVert = std::move(pTmp);
pVert = pTmp;
} }
else else
{ {
delete pTmp;
OSL_FAIL( "wrong line" ); OSL_FAIL( "wrong line" );
} }
} }
...@@ -2399,8 +2378,8 @@ bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const ...@@ -2399,8 +2378,8 @@ bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
{ {
// 2 BorderLines, flags, valid flags and distance // 2 BorderLines, flags, valid flags and distance
css::uno::Sequence< css::uno::Any > aSeq( 5 ); css::uno::Sequence< css::uno::Any > aSeq( 5 );
aSeq[0] <<= SvxBoxItem::SvxLineToLine( pHori, bConvert); aSeq[0] <<= SvxBoxItem::SvxLineToLine( pHori.get(), bConvert);
aSeq[1] <<= SvxBoxItem::SvxLineToLine( pVert, bConvert); aSeq[1] <<= SvxBoxItem::SvxLineToLine( pVert.get(), bConvert);
if ( IsTable() ) if ( IsTable() )
nVal |= 0x01; nVal |= 0x01;
if ( IsDist() ) if ( IsDist() )
...@@ -2415,10 +2394,10 @@ bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const ...@@ -2415,10 +2394,10 @@ bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
} }
case MID_HORIZONTAL: case MID_HORIZONTAL:
aRetLine = SvxBoxItem::SvxLineToLine( pHori, bConvert); aRetLine = SvxBoxItem::SvxLineToLine( pHori.get(), bConvert);
break; break;
case MID_VERTICAL: case MID_VERTICAL:
aRetLine = SvxBoxItem::SvxLineToLine( pVert, bConvert); aRetLine = SvxBoxItem::SvxLineToLine( pVert.get(), bConvert);
break; break;
case MID_FLAGS: case MID_FLAGS:
bIntMember = true; bIntMember = true;
...@@ -2811,7 +2790,7 @@ bool SvxLineItem::operator==( const SfxPoolItem& rAttr ) const ...@@ -2811,7 +2790,7 @@ bool SvxLineItem::operator==( const SfxPoolItem& rAttr ) const
{ {
assert(SfxPoolItem::operator==(rAttr)); assert(SfxPoolItem::operator==(rAttr));
return CmpBrdLn( pLine.get(), static_cast<const SvxLineItem&>(rAttr).GetLine() ); return CmpBrdLn( pLine, static_cast<const SvxLineItem&>(rAttr).GetLine() );
} }
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <editeng/editengdllapi.h> #include <editeng/editengdllapi.h>
#include <com/sun/star/table/BorderLine2.hpp> #include <com/sun/star/table/BorderLine2.hpp>
#include <o3tl/typed_flags_set.hxx> #include <o3tl/typed_flags_set.hxx>
#include <memory>
// class SvxBoxItem ------------------------------------------------------ // class SvxBoxItem ------------------------------------------------------
...@@ -52,10 +53,11 @@ serializing to stream. ...@@ -52,10 +53,11 @@ serializing to stream.
class EDITENG_DLLPUBLIC SvxBoxItem : public SfxPoolItem class EDITENG_DLLPUBLIC SvxBoxItem : public SfxPoolItem
{ {
editeng::SvxBorderLine *pTop, std::unique_ptr<editeng::SvxBorderLine>
*pBottom, pTop,
*pLeft, pBottom,
*pRight; pLeft,
pRight;
sal_uInt16 nTopDist, sal_uInt16 nTopDist,
nBottomDist, nBottomDist,
nLeftDist, nLeftDist,
...@@ -88,10 +90,10 @@ public: ...@@ -88,10 +90,10 @@ public:
virtual void ScaleMetrics( long nMult, long nDiv ) override; virtual void ScaleMetrics( long nMult, long nDiv ) override;
virtual bool HasMetrics() const override; virtual bool HasMetrics() const override;
const editeng::SvxBorderLine* GetTop() const { return pTop; } const editeng::SvxBorderLine* GetTop() const { return pTop.get(); }
const editeng::SvxBorderLine* GetBottom() const { return pBottom; } const editeng::SvxBorderLine* GetBottom() const { return pBottom.get(); }
const editeng::SvxBorderLine* GetLeft() const { return pLeft; } const editeng::SvxBorderLine* GetLeft() const { return pLeft.get(); }
const editeng::SvxBorderLine* GetRight() const { return pRight; } const editeng::SvxBorderLine* GetRight() const { return pRight.get(); }
const editeng::SvxBorderLine* GetLine( SvxBoxItemLine nLine ) const; const editeng::SvxBorderLine* GetLine( SvxBoxItemLine nLine ) const;
...@@ -158,8 +160,8 @@ namespace o3tl ...@@ -158,8 +160,8 @@ namespace o3tl
class EDITENG_DLLPUBLIC SvxBoxInfoItem : public SfxPoolItem class EDITENG_DLLPUBLIC SvxBoxInfoItem : public SfxPoolItem
{ {
editeng::SvxBorderLine* pHori; //inner horizontal Line std::unique_ptr<editeng::SvxBorderLine> pHori; //inner horizontal Line
editeng::SvxBorderLine* pVert; //inner vertical Line std::unique_ptr<editeng::SvxBorderLine> pVert; //inner vertical Line
bool mbEnableHor; /// true = Enable inner horizontal line. bool mbEnableHor; /// true = Enable inner horizontal line.
bool mbEnableVer; /// true = Enable inner vertical line. bool mbEnableVer; /// true = Enable inner vertical line.
...@@ -201,8 +203,8 @@ public: ...@@ -201,8 +203,8 @@ public:
virtual void ScaleMetrics( long nMult, long nDiv ) override; virtual void ScaleMetrics( long nMult, long nDiv ) override;
virtual bool HasMetrics() const override; virtual bool HasMetrics() const override;
const editeng::SvxBorderLine* GetHori() const { return pHori; } const editeng::SvxBorderLine* GetHori() const { return pHori.get(); }
const editeng::SvxBorderLine* GetVert() const { return pVert; } const editeng::SvxBorderLine* GetVert() const { return pVert.get(); }
//The Pointers are being copied! //The Pointers are being copied!
void SetLine( const editeng::SvxBorderLine* pNew, SvxBoxInfoItemLine nLine ); void SetLine( const editeng::SvxBorderLine* pNew, SvxBoxInfoItemLine nLine );
......
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