summaryrefslogtreecommitdiffstats
path: root/lotuswordpro/source/filter/lwppara1.cxx
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2010-12-24 10:03:59 +0100
committerDavid Tardon <dtardon@redhat.com>2010-12-24 14:17:54 +0100
commiteb13a88164d7ca860af6dc48c9646232d7f908f1 (patch)
tree2bf63ae3fcde6e3e750acf4ec59778e90b268cfe /lotuswordpro/source/filter/lwppara1.cxx
parentremove unused code (diff)
downloadcore-eb13a88164d7ca860af6dc48c9646232d7f908f1.tar.gz
core-eb13a88164d7ca860af6dc48c9646232d7f908f1.zip
replace virtual operator= by cloning
Diffstat (limited to 'lotuswordpro/source/filter/lwppara1.cxx')
-rw-r--r--lotuswordpro/source/filter/lwppara1.cxx89
1 files changed, 51 insertions, 38 deletions
diff --git a/lotuswordpro/source/filter/lwppara1.cxx b/lotuswordpro/source/filter/lwppara1.cxx
index 6cf899e74082..5be69ec7e0a5 100644
--- a/lotuswordpro/source/filter/lwppara1.cxx
+++ b/lotuswordpro/source/filter/lwppara1.cxx
@@ -62,6 +62,10 @@
Jan 2005 Created
************************************************************************/
+#include <memory>
+
+#include <boost/cast.hpp>
+
#include "lwppara.hxx"
#include "lwpglobalmgr.hxx"
#include "lwpfilehdr.hxx"
@@ -100,6 +104,14 @@
#include "lwpdropcapmgr.hxx"
#include "lwptable.hxx"
#include "lwpcelllayout.hxx"
+
+// for the check in boost::polymorphic_downcast
+#if OSL_DEBUG_LEVEL > 0 && !defined(NDEBUG)
+# define NDEBUG 1
+#endif
+
+using boost::polymorphic_downcast;
+
/**
* @short get text of paragraph
*/
@@ -340,22 +352,22 @@ void LwpPara::OverrideParaBorder(LwpParaProperty* pProps, XFParaStyle* pOverStyl
}
LwpOverride* pBorder = pParaStyle->GetParaBorder();
- LwpParaBorderOverride aFinalBorder;
- if (pBorder)
- {
- aFinalBorder = *pBorder;
- }
+ std::auto_ptr<LwpParaBorderOverride> pFinalBorder(
+ pBorder
+ ? polymorphic_downcast<LwpParaBorderOverride*>(pBorder->clone())
+ : new LwpParaBorderOverride)
+ ;
// get local border
pBorder = static_cast<LwpParaBorderProperty*>(pProps)->GetLocalParaBorder();
if (pBorder)
{
- LwpParaBorderOverride aLocalBorder;
- aLocalBorder = *pBorder;
- aLocalBorder.Override(&aFinalBorder);
+ boost::scoped_ptr<LwpParaBorderOverride> pLocalBorder(
+ polymorphic_downcast<LwpParaBorderOverride*>(pBorder->clone()));
+ pLocalBorder->Override(pFinalBorder.get());
}
- pParaStyle->ApplyParaBorder(pOverStyle, &aFinalBorder);
+ pParaStyle->ApplyParaBorder(pOverStyle, pFinalBorder.release());
}
/**
* @short: Override parabreaks style.
@@ -372,23 +384,24 @@ void LwpPara::OverrideParaBreaks(LwpParaProperty* pProps, XFParaStyle* pOverStyl
}
LwpOverride* pBreaks = pParaStyle->GetBreaks();
- LwpBreaksOverride* pFinalBreaks = new LwpBreaksOverride();
- if (pBreaks)
- {
- *pFinalBreaks = *pBreaks;
- }
+ std::auto_ptr<LwpBreaksOverride> pFinalBreaks(
+ pBreaks
+ ? polymorphic_downcast<LwpBreaksOverride*>(pBreaks->clone())
+ : new LwpBreaksOverride)
+ ;
// get local breaks
pBreaks = static_cast<LwpParaBreaksProperty*>(pProps)->GetLocalParaBreaks();
if (pBreaks)
{
- LwpBreaksOverride aLocalBreaks;
- aLocalBreaks = *pBreaks;
- aLocalBreaks.Override(pFinalBreaks);
+ boost::scoped_ptr<LwpBreaksOverride> const pLocalBreaks(
+ polymorphic_downcast<LwpBreaksOverride*>(pBreaks->clone()));
+ pLocalBreaks->Override(pFinalBreaks.get());
}
// save the breaks
- m_pBreaks = pFinalBreaks;
+ delete m_pBreaks;
+ m_pBreaks = pFinalBreaks.release();
//add by 1/31
XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
@@ -458,18 +471,18 @@ void LwpPara::OverrideParaBullet(LwpParaProperty* pProps)
m_bHasBullet = sal_True;
LwpOverride* pBullet= pParaStyle->GetBulletOverride();
- LwpBulletOverride aFinalBullet;
- if (pBullet)
- {
- aFinalBullet = *pBullet;
- }
-
- LwpBulletOverride aLocalBullet;
- aLocalBullet = *pLocalBullet;
- aLocalBullet.Override(&aFinalBullet);
-
- *m_pBullOver = aFinalBullet;
- aSilverBulletID = aFinalBullet.GetSilverBullet();
+ std::auto_ptr<LwpBulletOverride> pFinalBullet(
+ pBullet
+ ? polymorphic_downcast<LwpBulletOverride*>(pBullet->clone())
+ : new LwpBulletOverride)
+ ;
+
+ boost::scoped_ptr<LwpBulletOverride> const pLocalBullet2(pLocalBullet->clone());
+ pLocalBullet2->Override(pFinalBullet.get());
+
+ aSilverBulletID = pFinalBullet->GetSilverBullet();
+ delete m_pBullOver;
+ m_pBullOver = pFinalBullet.release();
if (!aSilverBulletID.IsNull())
{
m_pSilverBullet = static_cast<LwpSilverBullet*>(aSilverBulletID.obj(VO_SILVERBULLET));
@@ -494,8 +507,9 @@ void LwpPara::OverrideParaBullet(LwpParaProperty* pProps)
m_pSilverBullet->SetFoundry(m_pFoundry);
}
- m_pBullOver = new LwpBulletOverride();
- *m_pBullOver = *pBullOver;
+ std::auto_ptr<LwpBulletOverride> pBulletOverride(pBullOver->clone());
+ delete m_pBullOver;
+ m_pBullOver = pBulletOverride.release();
}
}
}
@@ -513,31 +527,30 @@ void LwpPara::OverrideParaNumbering(LwpParaProperty* pProps)
}
LwpNumberingOverride* pParaNumbering = pParaStyle->GetNumberingOverride();
- LwpNumberingOverride aOver;
+ std::auto_ptr<LwpNumberingOverride> pOver(new LwpNumberingOverride);
//Override with the local numbering, if any
if (pProps)
{
LwpNumberingOverride* pPropNumbering = static_cast<LwpParaNumberingProperty*>(pProps)->GetLocalNumbering();
if (pPropNumbering)
{
- aOver = *pPropNumbering;
+ pOver.reset(pPropNumbering->clone());
}
}
else
{
if (pParaNumbering)
{
- aOver = *pParaNumbering;
+ pOver.reset(pParaNumbering->clone());
}
}
if (m_nFlags & VALID_LEVEL)
{
- aOver.OverrideLevel(m_nLevel);
+ pOver->OverrideLevel(m_nLevel);
}
- m_aParaNumbering = aOver;
-
+ m_pParaNumbering.reset(pOver.release());
}
/**************************************************************************