[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