[Libreoffice-commits] .: binfilter/bf_basic

Joseph Powers jpowers at kemper.freedesktop.org
Sat Jan 8 12:52:36 PST 2011


 binfilter/bf_basic/source/basmgr/basmgr.cxx |   94 +++++++++++++++++++++++++++-
 1 file changed, 92 insertions(+), 2 deletions(-)

New commits:
commit 8630bb78201e9469dc665d8a1f7851f4cb42ecc7
Author: Joseph Powers <jpowers27 at cox.net>
Date:   Sat Jan 8 12:52:32 2011 -0800

    Remove DECLARE_LIST( BasicLibsBase, BasicLibInfo* )

diff --git a/binfilter/bf_basic/source/basmgr/basmgr.cxx b/binfilter/bf_basic/source/basmgr/basmgr.cxx
index e746261..69276dd 100644
--- a/binfilter/bf_basic/source/basmgr/basmgr.cxx
+++ b/binfilter/bf_basic/source/basmgr/basmgr.cxx
@@ -500,14 +500,104 @@ public:
         { mxScriptCont = xScriptCont; }
 };
 
-DECLARE_LIST( BasicLibsBase, BasicLibInfo* )
+typedef vector< BasicLibInfo* > BasicLibsBase;
 
-class BasicLibs : public BasicLibsBase
+class BasicLibs
 {
+private:
+    BasicLibsBase   mpList;
+    size_t          current;
+
 public:
     String	aBasicLibPath;		// soll eigentlich Member vom Manager werden, aber jetzt nicht inkompatibel!
+    BasicLibInfo*   GetObject( size_t i );
+    void            Insert( BasicLibInfo* item, size_t i );
+    void            Clear() { mpList.clear(); }
+    size_t          Count() { return mpList.size(); }
+    size_t          GetPos( BasicLibInfo* pItem );
+    size_t          GetCurPos() { return current; }
+    BasicLibInfo*   First();
+    BasicLibInfo*   Next();
+    BasicLibInfo*   Prev();
+    BasicLibInfo*   Last();
+    BasicLibInfo*   Remove( BasicLibInfo* pItem );
 };
 
+size_t BasicLibs::GetPos( BasicLibInfo* pItem )
+{
+    for ( size_t i = 0, n = mpList.size(); i < n; ++i )
+        if ( mpList[ i ] == pItem )
+            return i;
+    return size_t(-1);
+}
+
+void BasicLibs::Insert( BasicLibInfo* pItem, size_t i )
+{
+    if ( i >= mpList.size() )
+    {
+        mpList.push_back( pItem );
+        current = mpList.size() - 1;
+    }
+    else
+    {
+        BasicLibsBase::iterator it = mpList.begin();
+        ::std::advance( it, i );
+        mpList.insert( it, pItem );
+        current = i;
+    }
+}
+
+BasicLibInfo* BasicLibs::Remove( BasicLibInfo* pItem )
+{
+    size_t pos = GetPos( pItem );
+    if ( pos == size_t(-1) ) return NULL;
+
+    BasicLibsBase::iterator it = mpList.begin();
+    ::std::advance( it, pos );
+    mpList.erase( it );
+    return pItem;
+}
+
+BasicLibInfo* BasicLibs::GetObject( size_t i )
+{
+    if ( i >= mpList.size() ) return NULL;
+    return mpList[ i ];
+}
+
+BasicLibInfo* BasicLibs::First()
+{
+    current = 0;
+    if ( mpList.empty() ) return NULL;
+    return mpList[ current ];
+}
+
+BasicLibInfo* BasicLibs::Next()
+{
+    if (  mpList.empty()
+       || current+1 > mpList.size()
+       )
+        return NULL;
+    current++;
+    return mpList[ current ];
+}
+
+BasicLibInfo* BasicLibs::Prev()
+{
+    if (  mpList.empty()
+       || current == 0
+       )
+        return NULL;
+    current--;
+    return mpList[ current ];
+}
+
+BasicLibInfo* BasicLibs::Last()
+{
+    if ( mpList.empty() ) return NULL;
+    current = mpList.size() - 1;
+    return mpList[ current ];
+}
+
 BasicLibInfo::BasicLibInfo()
 {
     bReference 			= FALSE;


More information about the Libreoffice-commits mailing list