Kaydet (Commit) 05b9c892 authored tarafından Noel Grandin's avatar Noel Grandin

editeng: boost::ptr_vector->std::vector<std::unique_ptr>

Change-Id: I5b3d8e0e20938d8e66045ea6282f37afe29474e2
üst c1cd376c
...@@ -131,10 +131,10 @@ ContentInfo::ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse ...@@ -131,10 +131,10 @@ ContentInfo::ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse
for (size_t i = 0; i < rCopyFrom.aAttribs.size(); ++i) for (size_t i = 0; i < rCopyFrom.aAttribs.size(); ++i)
{ {
const XEditAttribute& rAttr = rCopyFrom.aAttribs[i]; const XEditAttribute& rAttr = *rCopyFrom.aAttribs[i].get();
XEditAttribute* pMyAttr = MakeXEditAttribute( XEditAttribute* pMyAttr = MakeXEditAttribute(
rPoolToUse, *rAttr.GetItem(), rAttr.GetStart(), rAttr.GetEnd()); rPoolToUse, *rAttr.GetItem(), rAttr.GetStart(), rAttr.GetEnd());
aAttribs.push_back(pMyAttr); aAttribs.push_back(std::unique_ptr<XEditAttribute>(pMyAttr));
} }
if ( rCopyFrom.GetWrongList() ) if ( rCopyFrom.GetWrongList() )
...@@ -145,7 +145,7 @@ ContentInfo::~ContentInfo() ...@@ -145,7 +145,7 @@ ContentInfo::~ContentInfo()
{ {
XEditAttributesType::iterator it = aAttribs.begin(), itEnd = aAttribs.end(); XEditAttributesType::iterator it = aAttribs.begin(), itEnd = aAttribs.end();
for (; it != itEnd; ++it) for (; it != itEnd; ++it)
aParaAttribs.GetPool()->Remove(*it->GetItem()); aParaAttribs.GetPool()->Remove(*(*it)->GetItem());
aAttribs.clear(); aAttribs.clear();
} }
...@@ -745,7 +745,7 @@ void EditTextObjectImpl::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttr ...@@ -745,7 +745,7 @@ void EditTextObjectImpl::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttr
const ContentInfo& rC = aContents[nPara]; const ContentInfo& rC = aContents[nPara];
for (size_t nAttr = 0; nAttr < rC.aAttribs.size(); ++nAttr) for (size_t nAttr = 0; nAttr < rC.aAttribs.size(); ++nAttr)
{ {
const XEditAttribute& rAttr = rC.aAttribs[nAttr]; const XEditAttribute& rAttr = *rC.aAttribs[nAttr].get();
EECharAttrib aEEAttr; EECharAttrib aEEAttr;
aEEAttr.pAttr = rAttr.GetItem(); aEEAttr.pAttr = rAttr.GetItem();
aEEAttr.nPara = nPara; aEEAttr.nPara = nPara;
...@@ -770,7 +770,7 @@ const SvxFieldItem* EditTextObjectImpl::GetField() const ...@@ -770,7 +770,7 @@ const SvxFieldItem* EditTextObjectImpl::GetField() const
size_t nAttribs = rC.aAttribs.size(); size_t nAttribs = rC.aAttribs.size();
for (size_t nAttr = nAttribs; nAttr; ) for (size_t nAttr = nAttribs; nAttr; )
{ {
const XEditAttribute& rX = rC.aAttribs[--nAttr]; const XEditAttribute& rX = *rC.aAttribs[--nAttr].get();
if (rX.GetItem()->Which() == EE_FEATURE_FIELD) if (rX.GetItem()->Which() == EE_FEATURE_FIELD)
return static_cast<const SvxFieldItem*>(rX.GetItem()); return static_cast<const SvxFieldItem*>(rX.GetItem());
} }
...@@ -793,7 +793,7 @@ const SvxFieldData* EditTextObjectImpl::GetFieldData(sal_Int32 nPara, size_t nPo ...@@ -793,7 +793,7 @@ const SvxFieldData* EditTextObjectImpl::GetFieldData(sal_Int32 nPara, size_t nPo
size_t nCurPos = 0; size_t nCurPos = 0;
for (; it != itEnd; ++it) for (; it != itEnd; ++it)
{ {
const XEditAttribute& rAttr = *it; const XEditAttribute& rAttr = *it->get();
if (rAttr.GetItem()->Which() != EE_FEATURE_FIELD) if (rAttr.GetItem()->Which() != EE_FEATURE_FIELD)
// Skip attributes that are not fields. // Skip attributes that are not fields.
continue; continue;
...@@ -823,7 +823,7 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const ...@@ -823,7 +823,7 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const
size_t nAttrs = rC.aAttribs.size(); size_t nAttrs = rC.aAttribs.size();
for (size_t nAttr = 0; nAttr < nAttrs; ++nAttr) for (size_t nAttr = 0; nAttr < nAttrs; ++nAttr)
{ {
const XEditAttribute& rAttr = rC.aAttribs[nAttr]; const XEditAttribute& rAttr = *rC.aAttribs[nAttr].get();
if (rAttr.GetItem()->Which() != EE_FEATURE_FIELD) if (rAttr.GetItem()->Which() != EE_FEATURE_FIELD)
continue; continue;
...@@ -855,7 +855,7 @@ bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich ) ...@@ -855,7 +855,7 @@ bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
for (size_t nAttr = rC.aAttribs.size(); nAttr; ) for (size_t nAttr = rC.aAttribs.size(); nAttr; )
{ {
XEditAttribute& rAttr = rC.aAttribs[--nAttr]; XEditAttribute& rAttr = *rC.aAttribs[--nAttr].get();
if ( !_nWhich || (rAttr.GetItem()->Which() == _nWhich) ) if ( !_nWhich || (rAttr.GetItem()->Which() == _nWhich) )
{ {
pPool->Remove(*rAttr.GetItem()); pPool->Remove(*rAttr.GetItem());
...@@ -913,7 +913,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs ) ...@@ -913,7 +913,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs )
rBorders.push_back(rC.GetText().getLength()); rBorders.push_back(rC.GetText().getLength());
for (size_t nAttr = 0; nAttr < rC.aAttribs.size(); ++nAttr) for (size_t nAttr = 0; nAttr < rC.aAttribs.size(); ++nAttr)
{ {
const XEditAttribute& rAttr = rC.aAttribs[nAttr]; const XEditAttribute& rAttr = *rC.aAttribs[nAttr].get();
const SfxPoolItem* pItem = rAttr.GetItem(); const SfxPoolItem* pItem = rAttr.GetItem();
if (!pItem) if (!pItem)
continue; continue;
...@@ -979,7 +979,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs ) ...@@ -979,7 +979,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs )
for (size_t i = 0; i < rC.aAttribs.size(); ++i) for (size_t i = 0; i < rC.aAttribs.size(); ++i)
{ {
const XEditAttribute& rXAttr = rC.aAttribs[i]; const XEditAttribute& rXAttr = *rC.aAttribs[i].get();
const SfxPoolItem* pItem = rXAttr.GetItem(); const SfxPoolItem* pItem = rXAttr.GetItem();
if (!pItem) if (!pItem)
continue; continue;
...@@ -1082,15 +1082,15 @@ void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily, ...@@ -1082,15 +1082,15 @@ void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily,
namespace { namespace {
class FindAttribByChar : public std::unary_function<XEditAttribute, bool> class FindAttribByChar : public std::unary_function<std::unique_ptr<XEditAttribute>, bool>
{ {
sal_uInt16 mnWhich; sal_uInt16 mnWhich;
sal_uInt16 mnChar; sal_uInt16 mnChar;
public: public:
FindAttribByChar(sal_uInt16 nWhich, sal_uInt16 nChar) : mnWhich(nWhich), mnChar(nChar) {} FindAttribByChar(sal_uInt16 nWhich, sal_uInt16 nChar) : mnWhich(nWhich), mnChar(nChar) {}
bool operator() (const XEditAttribute& rAttr) const bool operator() (const std::unique_ptr<XEditAttribute>& rAttr) const
{ {
return (rAttr.GetItem()->Which() == mnWhich) && (rAttr.GetStart() <= mnChar) && (rAttr.GetEnd() > mnChar); return (rAttr->GetItem()->Which() == mnWhich) && (rAttr->GetStart() <= mnChar) && (rAttr->GetEnd() > mnChar);
} }
}; };
...@@ -1145,7 +1145,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const ...@@ -1145,7 +1145,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const
} }
for (size_t nA = 0; nA < rC.aAttribs.size(); ++nA) for (size_t nA = 0; nA < rC.aAttribs.size(); ++nA)
{ {
const XEditAttribute& rAttr = rC.aAttribs[nA]; const XEditAttribute& rAttr = *rC.aAttribs[nA].get();
if (rAttr.GetItem()->Which() == EE_CHAR_FONTINFO) if (rAttr.GetItem()->Which() == EE_CHAR_FONTINFO)
{ {
...@@ -1227,7 +1227,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const ...@@ -1227,7 +1227,7 @@ void EditTextObjectImpl::StoreData( SvStream& rOStream ) const
// Which = 2; Surregat = 2; Start = 2; End = 2; // Which = 2; Surregat = 2; Start = 2; End = 2;
for (size_t nAttr = 0; nAttr < nAttribs; ++nAttr) for (size_t nAttr = 0; nAttr < nAttribs; ++nAttr)
{ {
const XEditAttribute& rX = rC.aAttribs[nAttr]; const XEditAttribute& rX = *rC.aAttribs[nAttr].get();
rOStream.WriteUInt16( rX.GetItem()->Which() ); rOStream.WriteUInt16( rX.GetItem()->Which() );
GetPool()->StoreSurrogate(rOStream, rX.GetItem()); GetPool()->StoreSurrogate(rOStream, rX.GetItem());
...@@ -1366,7 +1366,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) ...@@ -1366,7 +1366,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream )
else else
{ {
XEditAttribute* pAttr = new XEditAttribute( *pItem, nStart, nEnd ); XEditAttribute* pAttr = new XEditAttribute( *pItem, nStart, nEnd );
pC->aAttribs.push_back(pAttr); pC->aAttribs.push_back(std::unique_ptr<XEditAttribute>(pAttr));
if ( ( _nWhich >= EE_FEATURE_START ) && ( _nWhich <= EE_FEATURE_END ) ) if ( ( _nWhich >= EE_FEATURE_START ) && ( _nWhich <= EE_FEATURE_END ) )
{ {
...@@ -1395,7 +1395,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) ...@@ -1395,7 +1395,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream )
for (size_t nAttr = pC->aAttribs.size(); nAttr; ) for (size_t nAttr = pC->aAttribs.size(); nAttr; )
{ {
const XEditAttribute& rAttr = pC->aAttribs[--nAttr]; const XEditAttribute& rAttr = *pC->aAttribs[--nAttr].get();
if ( rAttr.GetItem()->Which() == EE_CHAR_FONTINFO ) if ( rAttr.GetItem()->Which() == EE_CHAR_FONTINFO )
{ {
const SvxFontItem& rFontItem = static_cast<const SvxFontItem&>(*rAttr.GetItem()); const SvxFontItem& rFontItem = static_cast<const SvxFontItem&>(*rAttr.GetItem());
...@@ -1420,7 +1420,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) ...@@ -1420,7 +1420,7 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream )
pPool->Remove(*rAttr.GetItem()); pPool->Remove(*rAttr.GetItem());
pC->aAttribs.erase(pC->aAttribs.begin()+nAttr); pC->aAttribs.erase(pC->aAttribs.begin()+nAttr);
pC->aAttribs.insert(pC->aAttribs.begin()+nAttr, pNewAttr); pC->aAttribs.insert(pC->aAttribs.begin()+nAttr, std::unique_ptr<XEditAttribute>(pNewAttr));
for ( sal_uInt16 nChar = pNewAttr->GetStart(); nChar < pNewAttr->GetEnd(); nChar++ ) for ( sal_uInt16 nChar = pNewAttr->GetStart(); nChar < pNewAttr->GetEnd(); nChar++ )
{ {
......
...@@ -128,7 +128,7 @@ class ContentInfo : boost::noncopyable ...@@ -128,7 +128,7 @@ class ContentInfo : boost::noncopyable
{ {
friend class EditTextObjectImpl; friend class EditTextObjectImpl;
public: public:
typedef boost::ptr_vector<XEditAttribute> XEditAttributesType; typedef std::vector<std::unique_ptr<XEditAttribute> > XEditAttributesType;
private: private:
svl::SharedString maText; svl::SharedString maText;
......
...@@ -35,7 +35,7 @@ public: ...@@ -35,7 +35,7 @@ public:
ContentInfo::XEditAttributesType& rAttribs = rContent.GetAttribs(); ContentInfo::XEditAttributesType& rAttribs = rContent.GetAttribs();
for (size_t j = 0; j < rAttribs.size(); ++j) for (size_t j = 0; j < rAttribs.size(); ++j)
{ {
XEditAttribute& rAttr = rAttribs[j]; XEditAttribute& rAttr = *rAttribs[j].get();
const SfxPoolItem* pItem = rAttr.GetItem(); const SfxPoolItem* pItem = rAttr.GetItem();
if (pItem->Which() != EE_FEATURE_FIELD) if (pItem->Which() != EE_FEATURE_FIELD)
// This is not a field item. // This is not a field item.
......
...@@ -1111,7 +1111,7 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel, SfxItemPool ...@@ -1111,7 +1111,7 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel, SfxItemPool
if ( !pX->GetLen() && !bEmptyPara ) if ( !pX->GetLen() && !bEmptyPara )
pTxtObj->mpImpl->DestroyAttrib(pX); pTxtObj->mpImpl->DestroyAttrib(pX);
else else
pC->GetAttribs().push_back(pX); pC->GetAttribs().push_back(std::unique_ptr<XEditAttribute>(pX));
} }
nAttr++; nAttr++;
pAttr = GetAttrib( pNode->GetCharAttribs().GetAttribs(), nAttr ); pAttr = GetAttrib( pNode->GetCharAttribs().GetAttribs(), nAttr );
...@@ -1259,7 +1259,7 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject ...@@ -1259,7 +1259,7 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
bool bUpdateFields = false; bool bUpdateFields = false;
for (size_t nAttr = 0; nAttr < nNewAttribs; ++nAttr) for (size_t nAttr = 0; nAttr < nNewAttribs; ++nAttr)
{ {
const XEditAttribute& rX = pC->GetAttribs()[nAttr]; const XEditAttribute& rX = *pC->GetAttribs()[nAttr].get();
// Can happen when paragraphs > 16K, it is simply wrapped. // Can happen when paragraphs > 16K, it is simply wrapped.
if ( rX.GetEnd() <= aPaM.GetNode()->Len() ) if ( rX.GetEnd() <= aPaM.GetNode()->Len() )
{ {
......
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