Kaydet (Commit) 8eae6dc8 authored tarafından Takeshi Abe's avatar Takeshi Abe Kaydeden (comit) Michael Stahl

fdo#75757: remove inheritance to std::vector

from SwGrfFmtColls.

Change-Id: I4dd83917584406704d1a52f85b8973f2714e9d0b
Reviewed-on: https://gerrit.libreoffice.org/11731Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
Tested-by: 's avatarMichael Stahl <mstahl@redhat.com>
üst 4173bc5f
...@@ -60,11 +60,18 @@ public: ...@@ -60,11 +60,18 @@ public:
virtual ~SwFmtsBase() = 0; virtual ~SwFmtsBase() = 0;
}; };
class SwGrfFmtColls : public std::vector<SwGrfFmtColl*>, public SwFmtsBase class SwGrfFmtColls : public SwFmtsBase
{ {
private:
std::vector<SwGrfFmtColl*> mvColls;
public: public:
virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); }
virtual SwFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return (SwFmt*)operator[](idx); } virtual SwFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return (SwFmt*)operator[](idx); }
size_t size() const { return mvColls.size(); }
SwGrfFmtColl *operator[](size_t idx) const { return mvColls[idx]; }
void push_back(SwGrfFmtColl* pColl) { mvColls.push_back(pColl); }
void DeleteAndDestroy(int nStartIdx, int nEndIdx);
sal_uInt16 GetPos(const SwGrfFmtColl* pFmt) const; sal_uInt16 GetPos(const SwGrfFmtColl* pFmt) const;
/// free's any remaining child objects /// free's any remaining child objects
virtual ~SwGrfFmtColls() {} virtual ~SwGrfFmtColls() {}
......
...@@ -406,16 +406,6 @@ static void DeleteAndDestroy(SwCharFmts& rFmts, int aStartIdx, int aEndIdx) ...@@ -406,16 +406,6 @@ static void DeleteAndDestroy(SwCharFmts& rFmts, int aStartIdx, int aEndIdx)
rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx); rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx);
} }
static void DeleteAndDestroy(SwGrfFmtColls& rFmts, int aStartIdx, int aEndIdx)
{
if (aEndIdx < aStartIdx)
return;
for( SwGrfFmtColls::const_iterator it = rFmts.begin() + aStartIdx;
it != rFmts.begin() + aEndIdx; ++it )
delete *it;
rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx);
}
/** /**
* Speciality: a member of the class SwDoc is located at * Speciality: a member of the class SwDoc is located at
* position 0 in the array of the Format and GDI objects. * position 0 in the array of the Format and GDI objects.
...@@ -557,7 +547,7 @@ SwDoc::~SwDoc() ...@@ -557,7 +547,7 @@ SwDoc::~SwDoc()
OSL_ENSURE( mpDfltGrfFmtColl == (*mpGrfFmtCollTbl)[0], OSL_ENSURE( mpDfltGrfFmtColl == (*mpGrfFmtCollTbl)[0],
"DefaultGrfCollection must always be at the start" ); "DefaultGrfCollection must always be at the start" );
DeleteAndDestroy(*mpGrfFmtCollTbl, 1, mpGrfFmtCollTbl->size()); mpGrfFmtCollTbl->DeleteAndDestroy(1, mpGrfFmtCollTbl->size());
delete mpGrfFmtCollTbl; delete mpGrfFmtCollTbl;
// Without explicitly freeing the DocumentDeviceManager // Without explicitly freeing the DocumentDeviceManager
...@@ -747,7 +737,7 @@ void SwDoc::ClearDoc() ...@@ -747,7 +737,7 @@ void SwDoc::ClearDoc()
if( 2 < mpTxtFmtCollTbl->size() ) if( 2 < mpTxtFmtCollTbl->size() )
DeleteAndDestroy(*mpTxtFmtCollTbl, 2, mpTxtFmtCollTbl->size()); DeleteAndDestroy(*mpTxtFmtCollTbl, 2, mpTxtFmtCollTbl->size());
DeleteAndDestroy(*mpTxtFmtCollTbl, 1, mpTxtFmtCollTbl->size()); DeleteAndDestroy(*mpTxtFmtCollTbl, 1, mpTxtFmtCollTbl->size());
DeleteAndDestroy(*mpGrfFmtCollTbl, 1, mpGrfFmtCollTbl->size()); mpGrfFmtCollTbl->DeleteAndDestroy(1, mpGrfFmtCollTbl->size());
DeleteAndDestroy(*mpCharFmtTbl, 1, mpCharFmtTbl->size()); DeleteAndDestroy(*mpCharFmtTbl, 1, mpCharFmtTbl->size());
if( getIDocumentLayoutAccess().GetCurrentViewShell() ) if( getIDocumentLayoutAccess().GetCurrentViewShell() )
...@@ -1176,10 +1166,20 @@ sal_uInt16 SwTxtFmtColls::GetPos(const SwTxtFmtColl* p) const ...@@ -1176,10 +1166,20 @@ sal_uInt16 SwTxtFmtColls::GetPos(const SwTxtFmtColl* p) const
return it == end() ? USHRT_MAX : it - begin(); return it == end() ? USHRT_MAX : it - begin();
} }
void SwGrfFmtColls::DeleteAndDestroy(int nStartIdx, int nEndIdx)
{
if (nEndIdx < nStartIdx)
return;
for( std::vector<SwGrfFmtColl*>::const_iterator it = mvColls.begin() + nStartIdx;
it != mvColls.begin() + nEndIdx; ++it )
delete *it;
mvColls.erase( mvColls.begin() + nStartIdx, mvColls.begin() + nEndIdx);
}
sal_uInt16 SwGrfFmtColls::GetPos(const SwGrfFmtColl* p) const sal_uInt16 SwGrfFmtColls::GetPos(const SwGrfFmtColl* p) const
{ {
const_iterator it = std::find(begin(), end(), p); std::vector<SwGrfFmtColl*>::const_iterator it = std::find(mvColls.begin(), mvColls.end(), p);
return it == end() ? USHRT_MAX : it - begin(); return it == mvColls.end() ? USHRT_MAX : it - mvColls.begin();
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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