summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2010-12-10 11:50:53 -0500
committerKohei Yoshida <kyoshida@novell.com>2010-12-10 11:51:51 -0500
commitb05da2308db1c80ba9c21c338558b0d2cff0850a (patch)
tree1a3d2f16537887906776e84f4a8c7fbdac5e1ecc /sc/source
parenta227d872a5c1c235297678928ac483c3e2d46ca6 (diff)
Some cleanup & build fix.
I need to export symbols of ScRangePairList as it is called from the excel export filter.
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/tool/rangelst.cxx92
1 files changed, 40 insertions, 52 deletions
diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index c77cc498eed1..f21e7a495c75 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -49,6 +49,32 @@ using ::std::advance;
using ::std::find_if;
using ::std::for_each;
+namespace {
+
+class FindRangeByAddress : public ::std::unary_function<bool, ScRange*>
+{
+public:
+ FindRangeByAddress(const ScAddress& rAddr) : mrAddr(rAddr) {}
+
+ bool operator() (const ScRange* pRange) const
+ {
+ return pRange->In(mrAddr);
+ }
+private:
+ const ScAddress& mrAddr;
+};
+
+template<typename T>
+struct DeleteObject : public ::std::unary_function<void, T*>
+{
+ void operator() (T* p)
+ {
+ delete p;
+ }
+};
+
+}
+
// === ScRangeList ====================================================
ScRangeList::~ScRangeList()
@@ -83,8 +109,7 @@ USHORT ScRangeList::Parse( const String& rStr, ScDocument* pDoc, USHORT nMask,
aOne = rStr.GetToken( i, cDelimiter );
aRange.aStart.SetTab( nTab ); // Default Tab wenn nicht angegeben
USHORT nRes = aRange.ParseAny( aOne, pDoc, eConv );
- USHORT nEndRangeBits = SCA_VALID_COL2 | SCA_VALID_ROW2 |
-SCA_VALID_TAB2;
+ USHORT nEndRangeBits = SCA_VALID_COL2 | SCA_VALID_ROW2 | SCA_VALID_TAB2;
USHORT nTmp1 = ( nRes & SCA_BITS );
USHORT nTmp2 = ( nRes & nEndRangeBits );
// If we have a valid single range with
@@ -226,14 +251,19 @@ void ScRangeList::Join( const ScRange& r, bool bIsInList )
bool ScRangeList::operator==( const ScRangeList& r ) const
{
if ( this == &r )
- return true; // identische Referenz
- size_t nCnt = maRanges.size();
- if ( nCnt != r.maRanges.size() )
+ return true;
+
+ if (maRanges.size() != r.maRanges.size())
return false;
- for ( size_t nIdx = 0; nIdx < nCnt; nIdx++ )
+
+ vector<ScRange*>::const_iterator itr1 = maRanges.begin(), itrEnd = maRanges.end();
+ vector<ScRange*>::const_iterator itr2 = r.maRanges.begin();
+ for (; itr1 != itrEnd; ++itr1, ++itr2)
{
- if ( *maRanges.at( nIdx ) != *r.maRanges.at( nIdx ) )
- return false; // auch andere Reihenfolge ist ungleich
+ const ScRange* p1 = *itr1;
+ const ScRange* p2 = *itr2;
+ if (*p1 != *p2)
+ return false;
}
return true;
}
@@ -287,23 +317,6 @@ bool ScRangeList::UpdateReference(
return bChanged;
}
-namespace {
-
-class FindRangeByAddress : public ::std::unary_function<bool, ScRange*>
-{
-public:
- FindRangeByAddress(const ScAddress& rAddr) : mrAddr(rAddr) {}
-
- bool operator() (const ScRange* pRange) const
- {
- return pRange->In(mrAddr);
- }
-private:
- const ScAddress& mrAddr;
-};
-
-}
-
const ScRange* ScRangeList::Find( const ScAddress& rAdr ) const
{
vector<ScRange*>::const_iterator itr = find_if(
@@ -382,21 +395,9 @@ ScRange* ScRangeList::Remove(size_t nPos)
return p;
}
-namespace {
-
-struct DeleteObject : public ::std::unary_function<void, ScRange*>
-{
- void operator() (ScRange* p)
- {
- delete p;
- }
-};
-
-}
-
void ScRangeList::RemoveAll()
{
- for_each(maRanges.begin(), maRanges.end(), DeleteObject());
+ for_each(maRanges.begin(), maRanges.end(), DeleteObject<ScRange>());
maRanges.clear();
}
@@ -457,22 +458,9 @@ void ScRangeList::push_back(ScRange* p)
// === ScRangePairList ========================================================
-namespace {
-
-struct DeletePair : public ::std::unary_function<void, ScRangePair*>
-{
- void operator() (ScRangePair* p)
- {
- delete p;
- }
-};
-
-}
-
-//-----------------------------------------------------------------------------
ScRangePairList::~ScRangePairList()
{
- for_each( maPairs.begin(), maPairs.end(), DeletePair() );
+ for_each( maPairs.begin(), maPairs.end(), DeleteObject<ScRangePair>() );
maPairs.clear();
}