Dnia 2011-08-03, śro o godzinie 00:23 -0400, Kohei Yoshida pisze:
@@ -2017,7 +2011,7 @@ bool
WW8_WrPlcSubDoc::WriteGenericTxt( WW8Export& rWrt, sal_uInt8 nTTyp,
{
// textbox - content
WW8_CP nCP = rWrt.Fc2Cp( rWrt.Strm().Tell() );
- aCps.Insert( nCP, i );
+ aCps.push_back( nCP );
pTxtPos->Append( nCP );
Hmm are you sure that you can replace that with vector's push_back()
there? For this to work correctly the i has to always point to the
end
position (last element + 1), but from the surrounding code I'm not
sure
if that's guaranteed. You probably should use vector's insert()
method
with a specific insert position, instead of using push_back() in this
case.
Ups, I will be more careful in the future, I have checked the function
itself but as you said calling this function is not guaranteed with
empty aCps.
Also, I've seen a code like the following
if (!vec.empty())
vec.clear();
in several places. While this code is not wrong (since the original
code was written that way), calling clear() on an empty vector does
nothing & is harmless. So just calling clear() should be fine without
checking for empty-ness.
Ok changed.
Other than that, the rest looks okay to me. I'd prefer someone more
experienced in Writer's code to sanity-check though.
O, so by the way there is in wrtww8.hxx a VARARR WW8Bytes which should
be migrated to ww::bytes. Is it okay to do?
Best Regards,
Maciej
From 80b069e455f1f6f166d279235f3b8c14da07c9b8 Mon Sep 17 00:00:00 2001
From: Maciej Rumianowski <maciej.rumianowski@gmail.com>
Date: Thu, 4 Aug 2011 00:38:26 +0200
Subject: [PATCH] Get rid of SvULongs in writer
Replace SvULongs with std::vector. In SwHTMLWriter simultaneously replace aOutlineMarks with
boost::ptr_vector.
---
sw/source/filter/html/htmlfly.cxx | 10 ++--
sw/source/filter/html/wrthtml.cxx | 18 ++++----
sw/source/filter/html/wrthtml.hxx | 7 ++-
sw/source/filter/ww8/wrtw8esh.cxx | 4 +-
sw/source/filter/ww8/wrtw8sty.cxx | 84 +++++++++++++++++--------------------
sw/source/filter/ww8/wrtww8.cxx | 24 +++++------
sw/source/filter/ww8/wrtww8.hxx | 24 ++++-------
7 files changed, 78 insertions(+), 93 deletions(-)
diff --git a/sw/source/filter/html/htmlfly.cxx b/sw/source/filter/html/htmlfly.cxx
index d278127..da7dcd0 100644
--- a/sw/source/filter/html/htmlfly.cxx
+++ b/sw/source/filter/html/htmlfly.cxx
@@ -1832,20 +1832,20 @@ void SwHTMLWriter::AddLinkTarget( const String& rURL )
SwPosition aPos( *pCurPam->GetPoint() );
if( pDoc->GotoOutline( aPos, aOutline ) )
{
- sal_uLong nIdx = aPos.nNode.GetIndex();
+ sal_uInt32 nIdx = aPos.nNode.GetIndex();
- sal_uInt16 nIns=0;
- while( nIns < aOutlineMarkPoss.Count() &&
+ sal_uInt32 nIns=0;
+ while( nIns < aOutlineMarkPoss.size() &&
aOutlineMarkPoss[nIns] < nIdx )
nIns++;
- aOutlineMarkPoss.Insert( nIdx, nIns );
+ aOutlineMarkPoss.insert( aOutlineMarkPoss.begin()+nIns, nIdx );
if( bEncoded )
{
aURL.Erase( nPos, 2 );
aURL.SetChar( nPos-1, cMarkSeperator );
}
- aOutlineMarks.Insert( new String( aURL ), nIns );
+ aOutlineMarks.insert( aOutlineMarks.begin()+nIns, new String( aURL ) );
}
}
else if( sCmp.EqualsAscii( pMarkToText ) )
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
index 1d5975a..ae4fee6 100644
--- a/sw/source/filter/html/wrthtml.cxx
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -402,11 +402,9 @@ sal_uLong SwHTMLWriter::WriteStream()
if( aImplicitMarks.Count() )
aImplicitMarks.DeleteAndDestroy( sal_uInt16(0), aImplicitMarks.Count() );
- if( aOutlineMarks.Count() )
- aOutlineMarks.DeleteAndDestroy( sal_uInt16(0), aOutlineMarks.Count() );
+ aOutlineMarks.clear();
- if( aOutlineMarkPoss.Count() )
- aOutlineMarkPoss.Remove( sal_uInt16(0), aOutlineMarkPoss.Count() );
+ aOutlineMarkPoss.clear();
if( aNumRuleNames.Count() )
aNumRuleNames.DeleteAndDestroy( sal_uInt16(0), aNumRuleNames.Count() );
@@ -1066,18 +1064,18 @@ void SwHTMLWriter::OutBookmarks()
pBookmark = (pMarkAccess->getMarksBegin() + nBkmkTabPos)->get();
}
- sal_uInt16 nPos;
- for( nPos = 0; nPos < aOutlineMarkPoss.Count() &&
+ sal_uInt32 nPos;
+ for( nPos = 0; nPos < aOutlineMarkPoss.size() &&
aOutlineMarkPoss[nPos] < nNode; nPos++ )
;
- while( nPos < aOutlineMarkPoss.Count() && aOutlineMarkPoss[nPos] == nNode )
+ while( nPos < aOutlineMarkPoss.size() && aOutlineMarkPoss[nPos] == nNode )
{
- String sMark( *aOutlineMarks[nPos] );
+ String sMark( aOutlineMarks[nPos] );
sMark.SearchAndReplaceAll( '?', '_' ); // '?' causes problems in IE/Netscape 5
OutAnchor( sMark );
- aOutlineMarkPoss.Remove( nPos, 1 );
- aOutlineMarks.DeleteAndDestroy( nPos, 1 );
+ aOutlineMarkPoss.erase( aOutlineMarkPoss.begin()+nPos );
+ aOutlineMarks.erase( aOutlineMarks.begin() + nPos );
}
}
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
index 4e040f1..83f93f4 100644
--- a/sw/source/filter/html/wrthtml.hxx
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -28,13 +28,14 @@
#ifndef _WRTHTML_HXX
#define _WRTHTML_HXX
+#include <boost/ptr_container/ptr_vector.hpp>
+#include <vector>
#include <com/sun/star/container/XIndexContainer.hpp>
#include <com/sun/star/form/XForm.hpp>
#include <vcl/field.hxx>
#define _SVSTDARR_STRINGSDTOR
#define _SVSTDARR_STRINGSSORTDTOR
-#define _SVSTDARR_ULONGS
#include <svl/svstdarr.hxx>
#include <i18npool/lang.h>
#include <tools/stream.hxx>
@@ -227,11 +228,11 @@ public:
SvStringsDtor aImgMapNames; // geschriebene Image Maps
SvStringsSortDtor aImplicitMarks;// implizite Stprungmarken
- SvStringsDtor aOutlineMarks; // geschriebene Image Maps
SvStringsSortDtor aNumRuleNames;// Names of exported num rules
SvStringsSortDtor aScriptParaStyles;// script dependent para styles
SvStringsSortDtor aScriptTextStyles;// script dependent text styles
- SvULongs aOutlineMarkPoss;
+ boost::ptr_vector<String> aOutlineMarks;
+ std::vector<sal_uInt32> aOutlineMarkPoss;
HTMLControls aHTMLControls; // die zu schreibenden ::com::sun::star::form::Forms
SwHTMLFmtInfos aChrFmtInfos;
SwHTMLFmtInfos aTxtCollInfos;
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index d0e85d8..2995c85 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -782,10 +782,10 @@ void WW8_WrPlcTxtBoxes::Append( const SdrObject& rObj, sal_uInt32 nShapeId )
{
void* p = (void*)&rObj;
aCntnt.Insert( p, aCntnt.Count() );
- aShapeIds.Insert( nShapeId, aShapeIds.Count() );
+ aShapeIds.push_back( nShapeId );
}
-const SvULongs* WW8_WrPlcTxtBoxes::GetShapeIdArr() const
+const std::vector<sal_uInt32>* WW8_WrPlcTxtBoxes::GetShapeIdArr() const
{
return &aShapeIds;
}
diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx
index d297a9c..93e4c79 100644
--- a/sw/source/filter/ww8/wrtw8sty.cxx
+++ b/sw/source/filter/ww8/wrtw8sty.cxx
@@ -93,14 +93,12 @@ struct WW8_SED
// cbSED is 12 (decimal)), C (hex).
};
-SV_IMPL_VARARR( WW8_WrSepInfoPtrs, WW8_SepInfo )
-
// class WW8_WrPlc0 ist erstmal nur fuer Header / Footer-Positionen, d.h. es
// gibt keine inhaltstragende Struktur.
class WW8_WrPlc0
{
private:
- SvULongs aPos; // PTRARR von CPs / FCs
+ std::vector<sal_uLong> aPos; // PTRARR von CPs / FCs
sal_uLong nOfs;
//No copying
@@ -108,7 +106,7 @@ private:
WW8_WrPlc0 &operator=(const WW8_WrPlc0&);
public:
WW8_WrPlc0( sal_uLong nOffset );
- sal_uInt16 Count() const { return aPos.Count(); }
+ sal_uInt16 Count() const { return aPos.size(); }
void Append( sal_uLong nStartCpOrFc );
void Write( SvStream& rStrm );
};
@@ -903,22 +901,22 @@ void wwFontHelper::WriteFontTable( const RtfAttributeOutput& rAttrOutput )
WW8_WrPlc0::WW8_WrPlc0( sal_uLong nOffset )
- : aPos( 4, 4 ), nOfs( nOffset )
+ : nOfs( nOffset )
{
}
void WW8_WrPlc0::Append( sal_uLong nStartCpOrFc )
{
- aPos.Insert( nStartCpOrFc - nOfs, aPos.Count() );
+ aPos.push_back( nStartCpOrFc - nOfs );
}
void WW8_WrPlc0::Write( SvStream& rStrm )
{
- sal_uInt16 nLen = aPos.Count();
- for( sal_uInt16 i = 0; i < nLen; ++i )
+ std::vector<sal_uLong>::const_iterator iter;
+ for( iter = aPos.begin(); iter != aPos.end(); ++iter )
{
SVBT32 nP;
- UInt32ToSVBT32( aPos[i], nP );
+ UInt32ToSVBT32( *iter, nP );
rStrm.Write( nP, 4 );
}
}
@@ -931,8 +929,7 @@ void WW8_WrPlc0::Write( SvStream& rStrm )
//------------------------------------------------------------------------------
MSWordSections::MSWordSections( MSWordExportBase& rExport )
- : mbDocumentIsProtected( false ),
- aSects( 4, 4 )
+ : mbDocumentIsProtected( false )
{
const SwSectionFmt *pFmt = 0;
rExport.pAktPageDesc = &const_cast<const SwDoc *>(rExport.pDoc)->GetPageDesc( 0 );
@@ -981,14 +978,13 @@ MSWordSections::MSWordSections( MSWordExportBase& rExport )
WW8_WrPlcSepx::WW8_WrPlcSepx( MSWordExportBase& rExport )
: MSWordSections( rExport ),
- aCps( 4, 4 ),
pAttrs( 0 ),
pTxtPos( 0 ),
bNoMoreSections( false )
{
// to be in sync with the AppendSection() call in the MSWordSections
// constructor
- aCps.Insert( sal_uLong( 0 ), aCps.Count() );
+ aCps.push_back( 0 );
}
MSWordSections::~MSWordSections()
@@ -997,7 +993,7 @@ MSWordSections::~MSWordSections()
WW8_WrPlcSepx::~WW8_WrPlcSepx()
{
- sal_uInt16 nLen = aSects.Count();
+ sal_uInt16 nLen = aSects.size();
if( pAttrs )
{
while( nLen )
@@ -1009,11 +1005,11 @@ WW8_WrPlcSepx::~WW8_WrPlcSepx()
sal_uInt16 MSWordSections::CurrentNumberOfColumns( const SwDoc &rDoc ) const
{
- OSL_ENSURE( aSects.Count(), "no segement inserted yet" );
- if ( !aSects.Count() )
+ OSL_ENSURE( !aSects.empty(), "no segement inserted yet" );
+ if ( aSects.empty() )
return 1;
- return NumberOfColumns( rDoc, aSects[aSects.Count() - 1] );
+ return NumberOfColumns( rDoc, aSects.back() );
}
sal_uInt16 MSWordSections::NumberOfColumns( const SwDoc &rDoc, const WW8_SepInfo& rInfo ) const
@@ -1043,8 +1039,8 @@ sal_uInt16 MSWordSections::NumberOfColumns( const SwDoc &rDoc, const
WW8_SepInfo
const WW8_SepInfo* MSWordSections::CurrentSectionInfo()
{
- if ( aSects.Count() > 0 )
- return &aSects[aSects.Count() - 1];
+ if ( !aSects.empty() )
+ return &aSects.back();
return NULL;
}
@@ -1052,9 +1048,8 @@ const WW8_SepInfo* MSWordSections::CurrentSectionInfo()
void MSWordSections::AppendSection( const SwPageDesc* pPd,
const SwSectionFmt* pSectionFmt, sal_uLong nLnNumRestartNo )
{
- aSects.Insert( WW8_SepInfo( pPd, pSectionFmt, nLnNumRestartNo ),
- aSects.Count() );
- NeedsDocumentProtected( aSects[aSects.Count()-1] );
+ aSects.push_back( WW8_SepInfo( pPd, pSectionFmt, nLnNumRestartNo ) );
+ NeedsDocumentProtected( aSects.back() );
}
void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwPageDesc* pPd,
@@ -1062,7 +1057,7 @@ void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwPageDesc* pPd,
{
if ( !bNoMoreSections )
{
- aCps.Insert( nStartCp, aCps.Count() );
+ aCps.push_back( nStartCp );
AppendSection( pPd, pSectionFmt, nLnNumRestartNo );
}
@@ -1073,7 +1068,7 @@ void MSWordSections::AppendSection( const SwFmtPageDesc& rPD,
{
WW8_SepInfo aI( rPD.GetPageDesc(), pSectionFmt, nLnNumRestartNo,
rPD.GetNumOffset(), &rNd );
- aSects.Insert( aI, aSects.Count() );
+ aSects.push_back( aI );
NeedsDocumentProtected( aI );
}
@@ -1082,7 +1077,7 @@ void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwFmtPageDesc& rPD,
{
if ( !bNoMoreSections )
{
- aCps.Insert(nStartCp, aCps.Count());
+ aCps.push_back( nStartCp );
AppendSection( rPD, rNd, pSectionFmt, nLnNumRestartNo );
}
@@ -1094,7 +1089,7 @@ void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwFmtPageDesc& rPD,
void MSWordSections::SetNum( const SwTxtNode* pNumNd )
{
- WW8_SepInfo& rInfo = aSects[ aSects.Count() - 1 ];
+ WW8_SepInfo& rInfo = aSects.back();
if ( !rInfo.pNumNd ) // noch nicht belegt
rInfo.pNumNd = pNumNd;
}
@@ -1234,9 +1229,10 @@ void MSWordSections::CheckForFacinPg( WW8Export& rWrt ) const
// 2 Werte werden gesetzt
// Dop.fFacingPages == Kopf-/Fusszeilen unterschiedlich
// Dop.fSwapBordersFacingPgs == gespiegelte Raender
- for( sal_uInt16 i = 0, nEnde = 0; i < aSects.Count(); ++i )
+ std::vector<WW8_SepInfo>::const_iterator iter = aSects.begin();
+ for( sal_uInt16 nEnde = 0; iter != aSects.end(); ++iter )
{
- WW8_SepInfo& rSepInfo = aSects[i];
+ const WW8_SepInfo& rSepInfo = *iter;
if( !rSepInfo.pSectionFmt )
{
const SwPageDesc* pPd = rSepInfo.pPageDesc;
@@ -1764,7 +1760,7 @@ void MSWordExportBase::SectionProperties( const WW8_SepInfo& rSepInfo,
WW8_PdAtt
bool WW8_WrPlcSepx::WriteKFTxt( WW8Export& rWrt )
{
- pAttrs = new WW8_PdAttrDesc[ aSects.Count() ];
+ pAttrs = new WW8_PdAttrDesc[ aSects.size() ];
sal_uLong nCpStart = rWrt.Fc2Cp( rWrt.Strm().Tell() );
OSL_ENSURE( !pTxtPos, "wer hat den Pointer gesetzt?" );
@@ -1775,7 +1771,7 @@ bool WW8_WrPlcSepx::WriteKFTxt( WW8Export& rWrt )
unsigned int nOldIndex = rWrt.GetHdFtIndex();
rWrt.SetHdFtIndex( 0 );
- for ( sal_uInt16 i = 0; i < aSects.Count(); ++i )
+ for ( sal_uInt16 i = 0; i < aSects.size(); ++i )
{
WW8_PdAttrDesc* pA = pAttrs + i;
pA->pData = 0;
@@ -1814,7 +1810,7 @@ bool WW8_WrPlcSepx::WriteKFTxt( WW8Export& rWrt )
void WW8_WrPlcSepx::WriteSepx( SvStream& rStrm ) const
{
sal_uInt16 i;
- for( i = 0; i < aSects.Count(); i++ ) // ueber alle Sections
+ for( i = 0; i < aSects.size(); i++ )
{
WW8_PdAttrDesc* pA = pAttrs + i;
if( pA->nLen && pA->pData != NULL)
@@ -1830,12 +1826,11 @@ void WW8_WrPlcSepx::WriteSepx( SvStream& rStrm ) const
void WW8_WrPlcSepx::WritePlcSed( WW8Export& rWrt ) const
{
- OSL_ENSURE( aCps.Count() == aSects.Count() + 1, "WrPlcSepx: DeSync" );
+ OSL_ENSURE( aCps.size() == aSects.size() + 1, "WrPlcSepx: DeSync" );
sal_uLong nFcStart = rWrt.pTableStrm->Tell();
sal_uInt16 i;
- // ( ueber alle Sections )
- for( i = 0; i <= aSects.Count(); i++ )
+ for( i = 0; i <= aSects.size(); i++ )
{
sal_uInt32 nP = aCps[i];
SVBT32 nPos;
@@ -1845,8 +1840,7 @@ void WW8_WrPlcSepx::WritePlcSed( WW8Export& rWrt ) const
static WW8_SED aSed = {{4, 0},{0, 0, 0, 0},{0, 0},{0xff, 0xff, 0xff, 0xff}};
- // ( ueber alle Sections )
- for( i = 0; i < aSects.Count(); i++ )
+ for( i = 0; i < aSects.size(); i++ )
{
WW8_PdAttrDesc* pA = pAttrs + i;
UInt32ToSVBT32( pA->nSepxFcPos, aSed.fcSepx ); // Sepx-Pos
@@ -1921,7 +1915,7 @@ void MSWordExportBase::WriteHeaderFooterText( const SwFmt& rFmt, bool bHeader
)
// WW8_WrPlcFtnEdn ist die Klasse fuer Fuss- und Endnoten
//------------------------------------------------------------------------------
WW8_WrPlcSubDoc::WW8_WrPlcSubDoc()
- : aCps( 0, 16 ), aCntnt( 0, 16 ), pTxtPos( 0 )
+ : aCntnt( 0, 16 ), pTxtPos( 0 )
{
}
@@ -1932,7 +1926,7 @@ WW8_WrPlcSubDoc::~WW8_WrPlcSubDoc()
void WW8_WrPlcFtnEdn::Append( WW8_CP nCp, const SwFmtFtn& rFtn )
{
- aCps.Insert( nCp, aCps.Count() );
+ aCps.push_back( nCp );
void* p = (void*)&rFtn;
aCntnt.Insert( p, aCntnt.Count() );
}
@@ -1955,7 +1949,7 @@ WW8_Annotation::WW8_Annotation(const SwRedlineData* pRedline) : mpRichText(0)
void WW8_WrPlcAnnotations::Append( WW8_CP nCp, const SwPostItField *pPostIt )
{
- aCps.Insert( nCp, aCps.Count() );
+ aCps.push_back( nCp );
WW8_Annotation* p = new WW8_Annotation(pPostIt);
aCntnt.Insert( p, aCntnt.Count() );
}
@@ -1963,7 +1957,7 @@ void WW8_WrPlcAnnotations::Append( WW8_CP nCp, const SwPostItField *pPostIt )
void WW8_WrPlcAnnotations::Append( WW8_CP nCp, const SwRedlineData *pRedline )
{
maProcessedRedlines.insert(pRedline);
- aCps.Insert( nCp, aCps.Count() );
+ aCps.push_back( nCp );
WW8_Annotation* p = new WW8_Annotation(pRedline);
aCntnt.Insert( p, aCntnt.Count() );
}
@@ -2017,7 +2011,7 @@ bool WW8_WrPlcSubDoc::WriteGenericTxt( WW8Export& rWrt, sal_uInt8 nTTyp,
{
// textbox - content
WW8_CP nCP = rWrt.Fc2Cp( rWrt.Strm().Tell() );
- aCps.Insert( nCP, i );
+ aCps.insert( aCps.begin()+i, nCP );
pTxtPos->Append( nCP );
// is it an writer or sdr - textbox?
@@ -2111,11 +2105,11 @@ void WW8_WrPlcSubDoc::WriteGenericPlc( WW8Export& rWrt, sal_uInt8 nTTyp,
typedef ::std::vector<String>::iterator myiter;
sal_uLong nFcStart = rWrt.pTableStrm->Tell();
- sal_uInt16 nLen = aCps.Count();
+ sal_uInt16 nLen = aCps.size();
if ( !nLen )
return;
- OSL_ENSURE( aCps.Count() + 2 == pTxtPos->Count(), "WritePlc: DeSync" );
+ OSL_ENSURE( aCps.size() + 2 == pTxtPos->Count(), "WritePlc: DeSync" );
::std::vector<String> aStrArr;
WW8Fib& rFib = *rWrt.pFib; // n+1-te CP-Pos nach Handbuch
@@ -2191,7 +2185,7 @@ void WW8_WrPlcSubDoc::WriteGenericPlc( WW8Export& rWrt, sal_uInt8 nTTyp,
case TXT_HFTXTBOX:
{
pTxtPos->Write( *rWrt.pTableStrm );
- const SvULongs* pShapeIds = GetShapeIdArr();
+ const std::vector<sal_uInt32>* pShapeIds = GetShapeIdArr();
OSL_ENSURE( pShapeIds, "wo sind die ShapeIds?" );
for ( i = 0; i < nLen; ++i )
@@ -2330,7 +2324,7 @@ void WW8_WrPlcSubDoc::WriteGenericPlc( WW8Export& rWrt, sal_uInt8 nTTyp,
rTxtCount = rWrt.pTableStrm->Tell() - nFcStart;
}
-const SvULongs* WW8_WrPlcSubDoc::GetShapeIdArr() const
+const std::vector<sal_uInt32>* WW8_WrPlcSubDoc::GetShapeIdArr() const
{
return 0;
}
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index cf07bc8..ae98d30 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -42,8 +42,6 @@
#include <osl/endian.h>
#include <docsh.hxx>
-#include <svl/svstdarr.hxx>
-
#include <unotools/fltrcfg.hxx>
#include <vcl/salbtype.hxx>
#include <sot/storage.hxx>
@@ -602,7 +600,7 @@ const SfxPoolItem& MSWordExportBase::GetItem(sal_uInt16 nWhich) const
//------------------------------------------------------------------------------
WW8_WrPlc1::WW8_WrPlc1( sal_uInt16 nStructSz )
- : aPos( 16, 16 ), nStructSiz( nStructSz )
+ : nStructSiz( nStructSz )
{
nDataLen = 16 * nStructSz;
pData = new sal_uInt8[ nDataLen ];
@@ -615,15 +613,15 @@ WW8_WrPlc1::~WW8_WrPlc1()
WW8_CP WW8_WrPlc1::Prev() const
{
- sal_uInt16 nLen = aPos.Count();
- OSL_ENSURE(nLen,"Prev called on empty list");
- return nLen ? aPos[nLen-1] : 0;
+ bool b = !aPos.empty();
+ OSL_ENSURE(b,"Prev called on empty list");
+ return b ? aPos.back() : 0;
}
void WW8_WrPlc1::Append( WW8_CP nCp, const void* pNewData )
{
- sal_uLong nInsPos = aPos.Count() * nStructSiz;
- aPos.Insert( nCp, aPos.Count() );
+ sal_uLong nInsPos = aPos.size() * nStructSiz;
+ aPos.push_back( nCp );
if( nDataLen < nInsPos + nStructSiz )
{
sal_uInt8* pNew = new sal_uInt8[ 2 * nDataLen ];
@@ -637,11 +635,11 @@ void WW8_WrPlc1::Append( WW8_CP nCp, const void* pNewData )
void WW8_WrPlc1::Finish( sal_uLong nLastCp, sal_uLong nSttCp )
{
- if( aPos.Count() )
+ if( !aPos.empty() )
{
- aPos.Insert( nLastCp, aPos.Count() );
+ aPos.push_back( nLastCp );
if( nSttCp )
- for( sal_uInt16 n = 0; n < aPos.Count(); ++n )
+ for( sal_uInt32 n = 0; n < aPos.size(); ++n )
aPos[ n ] -= nSttCp;
}
}
@@ -649,8 +647,8 @@ void WW8_WrPlc1::Finish( sal_uLong nLastCp, sal_uLong nSttCp )
void WW8_WrPlc1::Write( SvStream& rStrm )
{
- sal_uInt16 i;
- for( i = 0; i < aPos.Count(); ++i )
+ sal_uInt32 i;
+ for( i = 0; i < aPos.size(); ++i )
SwWW8Writer::WriteLong( rStrm, aPos[i] );
if( i )
rStrm.Write( pData, (i-1) * nStructSiz );
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index c3cbd09..2d606c9 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -31,10 +31,6 @@
#include <tools/solar.h> // UINTXX
#include <tools/gen.hxx>
-#ifndef _SVSTDARR_HXX
-#define _SVSTDARR_ULONGS
-#include <svl/svstdarr.hxx>
-#endif
#include <editeng/editdata.hxx>
#include <map>
@@ -179,15 +175,13 @@ struct WW8_SepInfo
bool IsProtected() const;
};
-SV_DECL_VARARR( WW8_WrSepInfoPtrs, WW8_SepInfo, 4, 4 )
-
/// Class to collect and output the sections/headers/footers.
// Plc fuer PageDescs -> Sepx ( Section Extensions )
class MSWordSections
{
protected:
bool mbDocumentIsProtected;
- WW8_WrSepInfoPtrs aSects; // PTRARR von SwPageDesc und SwSectionFmt
+ std::vector<WW8_SepInfo> aSects;
void CheckForFacinPg( WW8Export& rWrt ) const;
void WriteOlst( WW8Export& rWrt, const WW8_SepInfo& rSectionInfo );
@@ -231,7 +225,7 @@ public:
class WW8_WrPlcSepx : public MSWordSections
{
- SvULongs aCps; // PTRARR von CPs
+ std::vector<WW8_CP> aCps;
WW8_PdAttrDesc* pAttrs;
WW8_WrPlc0* pTxtPos; // Pos der einzelnen Header / Footer
bool bNoMoreSections;
@@ -252,7 +246,7 @@ public:
const SwNode& rNd,
const SwSectionFmt* pSectionFmt,
sal_uLong nLnNumRestartNo );
- void Finish( WW8_CP nEndCp ) { aCps.Insert( nEndCp, aCps.Count() ); }
+ void Finish( WW8_CP nEndCp ) { aCps.push_back( nEndCp ); }
bool WriteKFTxt( WW8Export& rWrt );
void WriteSepx( SvStream& rStrm ) const;
@@ -1157,7 +1151,7 @@ private:
WW8_WrPlcSubDoc(const WW8_WrPlcSubDoc&);
WW8_WrPlcSubDoc& operator=(const WW8_WrPlcSubDoc&);
protected:
- SvULongs aCps; // PTRARR CP-Pos der Verweise
+ std::vector<WW8_CP> aCps;
SvPtrarr aCntnt; // PTRARR von SwFmtFtn/PostIts/..
WW8_WrPlc0* pTxtPos; // Pos der einzelnen Texte
@@ -1168,7 +1162,7 @@ protected:
void WriteGenericPlc( WW8Export& rWrt, sal_uInt8 nTTyp, WW8_FC& rTxtStt,
sal_Int32& rTxtCnt, WW8_FC& rRefStt, sal_Int32& rRefCnt ) const;
- virtual const SvULongs* GetShapeIdArr() const;
+ virtual const std::vector<sal_uInt32>* GetShapeIdArr() const;
};
// Doppel-Plc fuer Footnotes/Endnotes
@@ -1221,8 +1215,8 @@ class WW8_WrPlcTxtBoxes : public WW8_WrPlcSubDoc // Doppel-Plc fuer Textboxen
{ // Rahmen/DrawTextboxes!
private:
sal_uInt8 nTyp;
- SvULongs aShapeIds; // VARARR of ShapeIds for the SwFrmFmts
- virtual const SvULongs* GetShapeIdArr() const;
+ std::vector<sal_uInt32> aShapeIds; // VARARR of ShapeIds for the SwFrmFmts
+ virtual const std::vector<sal_uInt32>* GetShapeIdArr() const;
//No copying
WW8_WrPlcTxtBoxes(const WW8_WrPlcTxtBoxes&);
@@ -1266,7 +1260,7 @@ public:
class WW8_WrPlc1
{
private:
- SvULongs aPos; // PTRARR von CPs
+ std::vector<WW8_CP> aPos;
sal_uInt8* pData; // Inhalte ( Strukturen )
sal_uLong nDataLen;
sal_uInt16 nStructSiz;
@@ -1275,7 +1269,7 @@ private:
WW8_WrPlc1(const WW8_WrPlc1&);
WW8_WrPlc1& operator=(const WW8_WrPlc1&);
protected:
- sal_uInt16 Count() const { return aPos.Count(); }
+ sal_uInt16 Count() const { return aPos.size(); }
void Write( SvStream& rStrm );
WW8_CP Prev() const;
public:
--
1.7.4.1
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.