Kaydet (Commit) 23c67746 authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in LwpPara

to simplify the management, use a std::vector instead of an embedded
linked list for LwpParaProperty

Change-Id: Ib09c6609967552a74d5cb2a43565104bf3f5c036
Reviewed-on: https://gerrit.libreoffice.org/50738Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 7d782a4b
......@@ -103,7 +103,6 @@ LwpPara::LwpPara(LwpObjectHeader const & objHdr, LwpSvStream* pStrm)
, m_nOrdinal(0)
, m_nFlags(0)
, m_nLevel(0)
, m_pProps(nullptr)
, m_pBreaks(nullptr)
, m_pIndentOverride(nullptr)
, m_FontID(0)
......@@ -122,21 +121,6 @@ LwpPara::LwpPara(LwpObjectHeader const & objHdr, LwpSvStream* pStrm)
LwpPara::~LwpPara()
{
if (m_pBreaks)
{
delete m_pBreaks;
m_pBreaks = nullptr;
}
delete m_pIndentOverride;
LwpParaProperty* pNextProp;
while(m_pProps)
{
pNextProp = m_pProps->GetNext();
delete m_pProps;
m_pProps = pNextProp;
}
}
void LwpPara::Read()
......@@ -323,31 +307,29 @@ void LwpPara::RegisterStyle()
if (pParaStyle && pParaStyle->GetIndent())
{
std::unique_ptr<LwpIndentOverride> pIndentOverride(GetParaStyle()->GetIndent()->clone());
delete m_pIndentOverride;
m_pIndentOverride = pIndentOverride.release();
m_pIndentOverride = std::move(pIndentOverride);
}
std::unique_ptr<XFParaStyle> xOverStyle;
bool noSpacing = true;
LwpParaProperty* pBulletProps = nullptr, *pNumberingProps = nullptr;
if (m_pProps != nullptr)
if (!m_vProps.empty())
{
bool noIndent = true;
xOverStyle.reset(new XFParaStyle);
*xOverStyle = *pBaseStyle;
xOverStyle->SetStyleName("");
LwpParaProperty* pProps = m_pProps;
sal_uInt32 PropType;
LwpParaStyle& rParaStyle = dynamic_cast<LwpParaStyle&>(*m_ParaStyle.obj());
while (pProps)
for (auto & pProps : m_vProps)
{
PropType = pProps->GetType();
switch(PropType)
{
case PP_LOCAL_ALIGN:
{
LwpAlignmentOverride *pAlignment = static_cast<LwpParaAlignProperty*>(pProps)->GetAlignment();
LwpAlignmentOverride *pAlignment = static_cast<LwpParaAlignProperty*>(pProps.get())->GetAlignment();
if (pAlignment)
{
if (!rParaStyle.GetAlignment())
......@@ -366,20 +348,20 @@ void LwpPara::RegisterStyle()
case PP_LOCAL_INDENT:
{
noIndent = false;
LwpIndentOverride *pIndent = static_cast<LwpParaIndentProperty*>(pProps)->GetIndent();
LwpIndentOverride *pIndent = static_cast<LwpParaIndentProperty*>(pProps.get())->GetIndent();
if (pIndent)
{
if (!rParaStyle.GetIndent())
OverrideIndent(nullptr, pIndent, xOverStyle.get());
else
OverrideIndent(m_pIndentOverride, pIndent, xOverStyle.get());
OverrideIndent(m_pIndentOverride.get(), pIndent, xOverStyle.get());
}
break;
}
case PP_LOCAL_SPACING:
{
noSpacing = false;
LwpSpacingOverride *pSpacing = static_cast<LwpParaSpacingProperty*>(pProps)->GetSpacing();
LwpSpacingOverride *pSpacing = static_cast<LwpParaSpacingProperty*>(pProps.get())->GetSpacing();
if (pSpacing)
{
if (!rParaStyle.GetSpacing())
......@@ -395,22 +377,22 @@ void LwpPara::RegisterStyle()
}
case PP_LOCAL_BORDER:
{
OverrideParaBorder(pProps, xOverStyle.get());
OverrideParaBorder(pProps.get(), xOverStyle.get());
break;
}
case PP_LOCAL_BREAKS:
{
OverrideParaBreaks(pProps, xOverStyle.get());
OverrideParaBreaks(pProps.get(), xOverStyle.get());
break;
}
case PP_LOCAL_BULLET:
{
pBulletProps = pProps;
pBulletProps = pProps.get();
break;
}
case PP_LOCAL_NUMBERING:
{
pNumberingProps = pProps;
pNumberingProps = pProps.get();
break;
}
case PP_LOCAL_TABRACK:
......@@ -419,7 +401,7 @@ void LwpPara::RegisterStyle()
}
case PP_LOCAL_BACKGROUND:
{
LwpBackgroundOverride* pBGOver = static_cast<LwpParaBackGroundProperty*>(pProps)->GetBackground();
LwpBackgroundOverride* pBGOver = static_cast<LwpParaBackGroundProperty*>(pProps.get())->GetBackground();
if (pBGOver)
{
LwpBackgroundStuff& rBGStuff = pBGOver->GetBGStuff();
......@@ -446,14 +428,13 @@ void LwpPara::RegisterStyle()
default:
break;
}
pProps = pProps->GetNext();
}
if (noIndent && m_pIndentOverride)
{
if (m_pIndentOverride->IsUseRelative() && GetParent())
{
OverrideIndent(nullptr,m_pIndentOverride,xOverStyle.get());
OverrideIndent(nullptr,m_pIndentOverride.get(),xOverStyle.get());
}
}
if (!m_ParentStyleName.isEmpty())
......@@ -469,7 +450,7 @@ void LwpPara::RegisterStyle()
{
xOverStyle.reset(new XFParaStyle);
*xOverStyle = *pBaseStyle;
OverrideIndent(nullptr,m_pIndentOverride,xOverStyle.get());
OverrideIndent(nullptr,m_pIndentOverride.get(),xOverStyle.get());
if (!m_ParentStyleName.isEmpty())
xOverStyle->SetParentStyleName(m_ParentStyleName);
m_StyleName = pXFStyleManager->AddStyle(xOverStyle.release()).m_pStyle->GetStyleName();
......@@ -511,7 +492,7 @@ void LwpPara::RegisterStyle()
}
else if (!m_xBullOver->IsEditable())
{
m_aBulletStyleName = pBulletStyleMgr->RegisterBulletStyle(this, m_xBullOver.get(), m_pIndentOverride);
m_aBulletStyleName = pBulletStyleMgr->RegisterBulletStyle(this, m_xBullOver.get(), m_pIndentOverride.get());
}
// test codes
......
......@@ -199,18 +199,18 @@ protected:
sal_uInt16 m_nFlags;
sal_uInt16 m_nLevel;
LwpFribPtr m_Fribs;
LwpParaProperty* m_pProps;
std::vector< std::unique_ptr<LwpParaProperty> > m_vProps;
//LwpForked3NotifyList* m_NotifyList; //not saved
OUString m_StyleName;
OUString m_ParentStyleName;//Add to support toc
LwpBreaksOverride* m_pBreaks;
std::unique_ptr<LwpBreaksOverride> m_pBreaks;
OUString m_AftPageBreakName;
OUString m_BefPageBreakName;
OUString m_AftColumnBreakName;
OUString m_BefColumnBreakName;
LwpIndentOverride* m_pIndentOverride;
std::unique_ptr<LwpIndentOverride> m_pIndentOverride;
OUString m_Content;//for silver bullet,get text of first frib
sal_uInt32 m_FontID;//for silver bullet
OUString m_AllText;//get all text in this paragraph
......@@ -327,13 +327,11 @@ inline void LwpPara::SetXFContainer(XFContentContainer* pCont)
}
inline LwpIndentOverride* LwpPara::GetIndent()
{
return m_pIndentOverride;
return m_pIndentOverride.get();
}
inline void LwpPara::SetIndent(LwpIndentOverride* pIndentOverride)
{
if (m_pIndentOverride)
delete m_pIndentOverride;
m_pIndentOverride = pIndentOverride;
m_pIndentOverride.reset( pIndentOverride );
}
inline LwpObjectID& LwpPara::GetStoryID()
{
......
......@@ -400,8 +400,7 @@ void LwpPara::OverrideParaBreaks(LwpParaProperty* pProps, XFParaStyle* pOverStyl
}
// save the breaks
delete m_pBreaks;
m_pBreaks = pFinalBreaks.release();
m_pBreaks.reset( pFinalBreaks.release() );
XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
if (m_pBreaks->IsKeepWithNext())
......@@ -554,16 +553,11 @@ void LwpPara::OverrideParaNumbering(LwpParaProperty const * pProps)
**************************************************************************/
LwpParaProperty* LwpPara::GetProperty(sal_uInt32 nPropType)
{
LwpParaProperty* pProps = m_pProps;
while(pProps)
{
if(pProps->GetType() == nPropType)
for (auto & i : m_vProps)
if(i->GetType() == nPropType)
{
return pProps;
return i.get();
}
pProps = pProps->GetNext();
}
return nullptr;
}
......
......@@ -130,8 +130,7 @@ void LwpPara::ReadPropertyList(LwpObjectStream* pFile)
// Stick it at the beginning of the list
if (NewProp)
{
NewProp->insert(m_pProps, nullptr);
m_pProps = NewProp;
m_vProps.emplace(m_vProps.begin(), NewProp);
}
}
}
......
......@@ -84,19 +84,14 @@
#define PP_LOCAL_KINSOKU 0x4b494e53UL /* "KINS" */
#define PP_PROPLIST 0x50524f50UL /* "PROP" */
class LwpParaProperty : public LwpDLList
class LwpParaProperty
{
public:
LwpParaProperty(){}
virtual ~LwpParaProperty() {}
virtual sal_uInt32 GetType() = 0;
inline LwpParaProperty* GetNext();
};
inline LwpParaProperty* LwpParaProperty::GetNext()
{
return static_cast<LwpParaProperty*>(LwpDLList::GetNext());
}
//align/indent/spacing
//TO DO:border/background etc
......
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