[Libreoffice-commits] .: binfilter/inc

Joseph Powers jpowers at kemper.freedesktop.org
Fri Jan 14 22:48:12 PST 2011


 binfilter/inc/bf_sc/rangelst.hxx |   74 +++++++++++++++++++++++++++++++++------
 1 file changed, 64 insertions(+), 10 deletions(-)

New commits:
commit 6c7a4a364ad941558013cb54d7ceaf21ad2cde50
Author: Joseph Powers <jpowers27 at cox.net>
Date:   Fri Jan 14 22:48:02 2011 -0800

    Remove DECLARE_LIST( ScRangePairListBase, ScRangePair* )

diff --git a/binfilter/inc/bf_sc/rangelst.hxx b/binfilter/inc/bf_sc/rangelst.hxx
index 831fa0d..ce9167c 100644
--- a/binfilter/inc/bf_sc/rangelst.hxx
+++ b/binfilter/inc/bf_sc/rangelst.hxx
@@ -154,12 +154,12 @@ SV_DECL_IMPL_REF( ScRangeList );
 
 // RangePairList: erster Range (aRange[0]) eigentlicher Range, zweiter
 // Range (aRange[1]) Daten zu diesem Range, z.B. Rows eines ColName
-DECLARE_LIST( ScRangePairListBase, ScRangePair* )
-class ScRangePairList : public ScRangePairListBase, public SvRefBase
+typedef ::std::vector< ScRangePair* > ScRangePairListBase;
+class ScRangePairList : public SvRefBase
 {
-#if defined( ICC ) && defined( OS2 )
-#endif
 private:
+    ScRangePairListBase maPairList;
+    size_t              current;
 
 public:
     virtual 		~ScRangePairList();
@@ -167,21 +167,75 @@ public:
     void			Append( const ScRangePair& rRangePair )
                     {
                         ScRangePair* pR = new ScRangePair( rRangePair );
-                        Insert( pR, LIST_APPEND );
+                        maPairList.push_back( pR );
                     }
+    size_t          Count() const { return maPairList.size(); }
     void			Join( const ScRangePair&, BOOL bIsInList = FALSE );
     BOOL 			UpdateReference( UpdateRefMode, ScDocument*,
                                     const ScRange& rWhere,
                                     short nDx, short nDy, short nDz );
     ScRangePair*	Find( const ScRange& ) const;
-/*N*/ 	BOOL			Load( SvStream&, USHORT nVer );
-/*N*/ 	BOOL			Store( SvStream& ) const;
+    BOOL			Load( SvStream&, USHORT nVer );
+    BOOL			Store( SvStream& ) const;
+
+    size_t          GetPos( ScRangePair* item )
+                    {
+                        for ( size_t i = 0, n = maPairList.size(); i < n; ++i )
+                            if ( maPairList[ i ] == item ) return i;
+                        return size_t(-1);
+                    }
+
+    ScRangePair*    Remove( size_t i )
+                    {
+                        if ( i < maPairList.size() )
+                        {
+                            ScRangePairListBase::iterator it = maPairList.begin();
+                            ::std::advance( it, i );
+                            maPairList.erase( it );
+                            current = i;
+                        }
+                        return NULL;
+                    }
+
+    ScRangePair*    Remove( ScRangePair* item )
+                    {
+                        size_t i = GetPos( item );
+                        return Remove( i );
+                    }
+
+    ScRangePair*    GetObject( size_t i )
+                    {
+                        if ( i >= maPairList.size() ) return NULL;
+                        return maPairList[ i ];
+                    }
+
+    ScRangePair*    GetObject( size_t i ) const
+                    {
+                        if ( i >= maPairList.size() ) return NULL;
+                        return maPairList[ i ];
+                    }
+
+    void            Seek( size_t i ) { current = i; }
+
+    ScRangePair*    First()
+                    {
+                        current = 0;
+                        return maPairList.empty() ? NULL : maPairList[ current ];
+                    }
+
+    ScRangePair*    Next()
+                    {
+                        if ( current+1 < maPairList.size() )
+                        {
+                            ++current;
+                            return maPairList[ current ];
+                        }
+                        return NULL;
+                    }
+
 };
 SV_DECL_IMPL_REF( ScRangePairList );
 
-#if defined( ICC ) && defined( SC_RANGELST_CXX ) && defined( OS2 )
-#endif
-
 
 } //namespace binfilter
 #endif


More information about the Libreoffice-commits mailing list