From c5e8339c32c232029e232a847c0c3ec8a7029544 Mon Sep 17 00:00:00 2001
From: Joseph Powers <jpowers27@cox.net>
Date: Mon, 27 Dec 2010 06:29:50 -0800
Subject: [PATCH] Remove DECLARE_LIST(EditList, AppWin*)

released under LGPL 3+
---
 basic/source/app/app.cxx    |  169 +++++++++++++++++++++++++++----------------
 basic/source/app/app.hxx    |   16 ++--
 basic/source/app/appwin.cxx |    2 +-
 basic/source/app/appwin.hxx |    7 +-
 basic/source/app/status.cxx |    4 +-
 5 files changed, 123 insertions(+), 75 deletions(-)

diff --git a/basic/source/app/app.cxx b/basic/source/app/app.cxx
index 73c9e15..3ff9441 100644
--- a/basic/source/app/app.cxx
+++ b/basic/source/app/app.cxx
@@ -627,17 +627,15 @@ void BasicFrame::LoadIniFile()
     if ( pBasic )
         pBasic->LoadIniFile();
 
-    for ( i = 0 ; i < pList->Count() ; i++ )
-        pList->GetObject( i )->LoadIniFile();
+    for ( i = 0 ; i < pList->size() ; i++ )
+        pList->at( i )->LoadIniFile();
 }
 
 BasicFrame::~BasicFrame()
 {
-    AppWin* p = pList->First();
-    DBG_ASSERT( !p, "Still open FileWindows");
-    if( p )
-        while( (p = pList->Remove() ) != NULL )
-            delete p;
+    for ( size_t i = 0, n = pList->size(); i < n; ++i )
+        delete pList->at( i );
+    pList->clear();
 
     MenuBar *pBar = GetMenuBar();
     SetMenuBar( NULL );
@@ -699,8 +697,8 @@ IMPL_LINK( BasicFrame, CheckAllFiles, Timer*, pTimer )
     {
         AppWin* pStartWin = pWork;
         Window* pFocusWin = Application::GetFocusWindow();
-        for ( int i = pList->Count()-1 ; i >= 0 ; i-- )
-            pList->GetObject( i )->CheckReload();
+        for ( size_t i = pList->size() ; i > 0 ; )
+            pList->at( --i )->CheckReload();
 
         if ( pWork != pStartWin )
         {
@@ -777,11 +775,10 @@ void BasicFrame::Resize()
 
 
     // Resize possibly maximized window
-    ULONG i;
-    for( i = pList->Count(); i > 0 ; i-- )
+    for( size_t i = pList->size(); i > 0 ; i-- )
     {
-        if ( pList->GetObject( i-1 )->GetWinState() == TT_WIN_STATE_MAX )
-            pList->GetObject( i-1 )->Maximize();
+        if ( pList->at( i-1 )->GetWinState() == TT_WIN_STATE_MAX )
+            pList->at( i-1 )->Maximize();
     }
 }
 
@@ -801,42 +798,58 @@ void BasicFrame::GetFocus()
 IMPL_LINK( BasicFrame, CloseButtonClick, void*, EMPTYARG )
 {
     AppWin* p;
-    for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() )
-    {};
-    if ( p )
-        p->GrabFocus();
+    for ( size_t i = pList->size(); i > 0; --i )
+    {
+        p = pList->at( i - 1 );
+        if ( p->GetWinState() == TT_WIN_STATE_MAX )
+        {
+            p->GrabFocus();
+            break;
+        }
+    }
     return Command( RID_FILECLOSE, FALSE );
 }
 
 IMPL_LINK( BasicFrame, FloatButtonClick, void*, EMPTYARG )
 {
     AppWin* p;
-    for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() )
-    {};
-    if ( p )
-        p->TitleButtonClick( TITLE_BUTTON_DOCKING );
+    for ( size_t i = pList->size(); i > 0; --i )
+    {
+        p = pList->at( i - 1 );
+        if ( p->GetWinState() == TT_WIN_STATE_MAX )
+        {
+            p->TitleButtonClick( TITLE_BUTTON_DOCKING );
+            break;
+        }
+    }
     return 1;
 }
 
 IMPL_LINK( BasicFrame, HideButtonClick, void*, EMPTYARG )
 {
     AppWin* p;
-    for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() )
-    {};
-    if ( p )
-        p->TitleButtonClick( TITLE_BUTTON_HIDE );
+    for ( size_t i = pList->size(); i > 0; --i )
+    {
+        p = pList->at( i - 1 );
+        if ( p->GetWinState() == TT_WIN_STATE_MAX )
+        {
+            p->TitleButtonClick( TITLE_BUTTON_HIDE );
+            break;
+        }
+    }
     return 1;
 }
 
 void BasicFrame::WinShow_Hide()
 {
-    if ( !pList->Count() )
+    if ( pList->empty() )
         return;
 
     AppWin* p;
     BOOL bWasFullscreen = FALSE;
-    for ( p = pList->Last() ; p ; p = pList->Prev() )
+    for ( size_t i = pList->size(); i > 0; --i )
     {
+        p = pList->at( i - 1 );
         if ( p->pDataEdit )
         {
             if ( p->GetWinState() & TT_WIN_STATE_HIDE	// Hidden
@@ -855,16 +868,26 @@ void BasicFrame::WinMax_Restore()
     // The application buttons
     AppWin* p;
     BOOL bHasFullscreenWin = FALSE;
-    for( p = pList->First(); p && !bHasFullscreenWin ; p = pList->Next() )
-        bHasFullscreenWin |= ( p->GetWinState() == TT_WIN_STATE_MAX );
+    for ( size_t i = 0, n = pList->size(); i < n && !bHasFullscreenWin; ++i )
+    {
+        p = pList->at( i );
+        bHasFullscreenWin = ( p->GetWinState() == TT_WIN_STATE_MAX );
+    }
     GetMenuBar()->ShowButtons( bHasFullscreenWin, FALSE, FALSE );
     WinShow_Hide();
 }
 
 void BasicFrame::RemoveWindow( AppWin *pWin )
 {
-    pList->Remove( pWin );
-    pWork = pList->Last();
+    for ( EditList::iterator it = pList->begin(); it < pList->end(); ++it )
+    {
+        if ( *it == pWin )
+        {
+            pList->erase( it );
+            break;
+        }
+    }
+    pWork = ( pList->empty() ) ? NULL : pList->back();
 
     WinShow_Hide();
 
@@ -874,7 +897,8 @@ void BasicFrame::RemoveWindow( AppWin *pWin )
     WinMax_Restore();
 
     Menu* pMenu = GetMenuBar();
-    if( pList->Count() == 0 ) {
+    if( pList->empty() )
+    {
         pMenu->EnableItem( RID_APPEDIT,   FALSE );
         pMenu->EnableItem( RID_APPRUN,	  FALSE );
         pMenu->EnableItem( RID_APPWINDOW, FALSE );
@@ -893,14 +917,15 @@ void BasicFrame::RemoveWindow( AppWin *pWin )
 
 void BasicFrame::AddWindow( AppWin *pWin )
 {
-    pList->Insert( pWin, LIST_APPEND );
+    pList->push_back( pWin );
     pWork = pWin;
 
     WinMax_Restore();
 
     // Enable main menu
     MenuBar* pMenu = GetMenuBar();
-    if( pList->Count() > 0 ) {
+    if( !pList->empty() )
+    {
         pMenu->EnableItem( RID_APPEDIT,   TRUE );
         pMenu->EnableItem( RID_APPRUN,	  TRUE );
         pMenu->EnableItem( RID_APPWINDOW, TRUE );
@@ -938,8 +963,15 @@ void BasicFrame::WindowRenamed( AppWin *pWin )
 void BasicFrame::FocusWindow( AppWin *pWin )
 {
     pWork = pWin;
-    pList->Remove( pWin );
-    pList->Insert( pWin, LIST_APPEND );
+    for ( EditList::iterator it = pList->begin(); it < pList->end(); ++it )
+    {
+        if ( *it == pWin )
+        {
+            pList->erase( it );
+            break;
+        }
+    }
+    pList->push_back( pWin );
     pWin->Minimize( FALSE );
 
     aAppFile = pWin->GetText();
@@ -976,8 +1008,8 @@ BOOL BasicFrame::Close()
 
 BOOL BasicFrame::CloseAll()
 {
-    while ( pList->Count() )
-        if ( !pList->Last()->Close() )
+    while ( !pList->empty() )
+        if ( !pList->back()->Close() )
             return FALSE;
     return TRUE;
 }
@@ -985,8 +1017,11 @@ BOOL BasicFrame::CloseAll()
 BOOL BasicFrame::CompileAll()
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
-      if( p->ISA(AppBasEd) && !((AppBasEd*)p)->Compile() ) return FALSE;
+    for ( size_t i = 0, n = pList->size(); i < n; ++i )
+    {
+        p = pList->at( i );
+        if ( p->ISA(AppBasEd) && !((AppBasEd*)p)->Compile() ) return FALSE;
+    }
     return TRUE;
 }
 
@@ -1325,7 +1360,14 @@ long BasicFrame::Command( short nID, BOOL bChecked )
                 else
                 {
                     AppWin *w = NULL;
-                    for ( w = pList->Last() ; w ? !w->ISA(AppBasEd) : FALSE ; w = pList->Prev() ) ;
+                    for ( size_t i = pList->size(); i > 0; --i )
+                    {
+                        if ( pList->at( i-1 )->ISA( AppBasEd ) )
+                        {
+                            w = pList->at( i-1 );
+                            break;
+                        }
+                    }
                     if ( w )
                     {
                         p = ((AppBasEd*)w);
@@ -1399,13 +1441,12 @@ long BasicFrame::Command( short nID, BOOL bChecked )
         case RID_WINTILE:
             {
                 WindowArrange aArange;
-                for ( ULONG i = 0 ; i < pList->Count() ; i++ )
+                for ( size_t i = 0, n = pList->size(); i < n ; i++ )
                 {
-                    aArange.AddWindow( pList->GetObject( i ) );
-                    pList->GetObject( i )->Restore();
+                    aArange.AddWindow( pList->at( i ) );
+                    pList->at( i )->Restore();
                 }
 
-
                 sal_Int32 nTitleHeight;
                 {
                     sal_Int32 nDummy1, nDummy2, nDummy3;
@@ -1423,10 +1464,10 @@ long BasicFrame::Command( short nID, BOOL bChecked )
         case RID_WINTILEHORZ:
             {
                 WindowArrange aArange;
-                for ( ULONG i = 0 ; i < pList->Count() ; i++ )
+                for ( size_t i = 0, n = pList->size(); i < n ; i++ )
                 {
-                    aArange.AddWindow( pList->GetObject( i ) );
-                    pList->GetObject( i )->Restore();
+                    aArange.AddWindow( pList->at( i ) );
+                    pList->at( i )->Restore();
                 }
 
 
@@ -1447,10 +1488,10 @@ long BasicFrame::Command( short nID, BOOL bChecked )
         case RID_WINTILEVERT:
             {
                 WindowArrange aArange;
-                for ( ULONG i = 0 ; i < pList->Count() ; i++ )
+                for ( size_t i = 0, n = pList->size(); i < n ; i++ )
                 {
-                    aArange.AddWindow( pList->GetObject( i ) );
-                    pList->GetObject( i )->Restore();
+                    aArange.AddWindow( pList->at( i ) );
+                    pList->at( i )->Restore();
                 }
 
 
@@ -1470,9 +1511,9 @@ long BasicFrame::Command( short nID, BOOL bChecked )
             break;
         case RID_WINCASCADE:
             {
-                for ( USHORT i = 0 ; i < pList->Count() ; i++ )
+                for ( size_t i = 0, n = pList->size(); i < n ; i++ )
                 {
-                    pList->GetObject( i )->Cascade( i );
+                    pList->at( i )->Cascade( i );
                 }
             }
             break;
@@ -1523,8 +1564,9 @@ long BasicFrame::Command( short nID, BOOL bChecked )
 BOOL BasicFrame::SaveAll()
 {
     AppWin* p, *q = pWork;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         USHORT nRes = p->QuerySave( QUERY_DISK_CHANGED );
         if( (( nRes == SAVE_RES_ERROR ) && QueryBox(this,SttResId(IDS_ASKSAVEERROR)).Execute() == RET_NO )
             || ( nRes == SAVE_RES_CANCEL ) )
@@ -1543,8 +1585,9 @@ IMPL_LINK( BasicFrame, ModuleWinExists, String*, pFilename )
 AppBasEd* BasicFrame::FindModuleWin( const String& rName )
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         if( p->ISA(AppBasEd) && ((AppBasEd*)p)->GetModName() == rName )
             return ((AppBasEd*)p);
     }
@@ -1554,8 +1597,9 @@ AppBasEd* BasicFrame::FindModuleWin( const String& rName )
 AppError* BasicFrame::FindErrorWin( const String& rName )
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         if( p->ISA(AppError) && ((AppError*)p)->GetText() == rName )
             return ((AppError*)p);
     }
@@ -1565,8 +1609,9 @@ AppError* BasicFrame::FindErrorWin( const String& rName )
 AppWin* BasicFrame::FindWin( const String& rName )
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         if( p->GetText() == rName )
             return p;
     }
@@ -1576,8 +1621,9 @@ AppWin* BasicFrame::FindWin( const String& rName )
 AppWin* BasicFrame::FindWin( USHORT nWinId )
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         if( p->GetWinId() == nWinId )
             return p;
     }
@@ -1587,8 +1633,9 @@ AppWin* BasicFrame::FindWin( USHORT nWinId )
 AppWin* BasicFrame::IsWinValid( AppWin* pMaybeWin )
 {
     AppWin* p;
-    for( p = pList->First(); p; p = pList->Next() )
+    for ( size_t i = 0, n = pList->size(); i < n ; i++ )
     {
+        p = pList->at( i );
         if( p == pMaybeWin )
             return p;
     }
@@ -1597,9 +1644,9 @@ AppWin* BasicFrame::IsWinValid( AppWin* pMaybeWin )
 
 IMPL_LINK( BasicFrame, WriteString, String*, pString )
 {
-    if ( pList->Last() )
+    if ( !pList->empty() )
     {
-        pList->Last()->pDataEdit->ReplaceSelected( *pString );
+        pList->back()->pDataEdit->ReplaceSelected( *pString );
         return TRUE;
     }
     else
diff --git a/basic/source/app/app.hxx b/basic/source/app/app.hxx
index d866418..f523b28 100644
--- a/basic/source/app/app.hxx
+++ b/basic/source/app/app.hxx
@@ -2,7 +2,7 @@
 /*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
@@ -39,8 +39,8 @@
 
 class BasicFrame;
 #include <basic/mybasic.hxx>
+#include <vector>
 
-class EditList;
 class AppWin;
 class AppEdit;
 class AppBasEd;
@@ -50,12 +50,12 @@ class StatusLine;
 class BasicPrinter;
 struct TTLogMsg;
 
+typedef ::std::vector< AppWin* > EditList;
+
 class BasicApp : public Application {
     short		nWait;				// Wait-Zaehler
 public:
-//	Help*		pHelp;				// Hilfesystem
     BasicFrame*	pFrame;				// Frame Window
-//	MenuBar*	pMainMenu;			// Hauptmenue
     Accelerator*	pMainAccel;		// Acceleratoren
 
     int Main( );
@@ -90,13 +90,13 @@ class BasicFrame : public WorkWindow, public SfxBroadcaster, public SfxListener
 using SystemWindow::Notify;
 using Window::Command;
 
-virtual BOOL Close();
+    virtual BOOL Close();
     BOOL CloseAll();          // Close all windows
     BOOL CompileAll();        // Compile all texts
     AutoTimer aLineNum;       // Show the line numbers
-virtual void Resize();
-virtual void Move();
-virtual void GetFocus();
+    virtual void Resize();
+    virtual void Move();
+    virtual void GetFocus();
     void LoadLibrary();
     void SaveLibrary();
     BOOL bIsAutoRun;
diff --git a/basic/source/app/appwin.cxx b/basic/source/app/appwin.cxx
index 25dd2f1..1f0bf79 100644
--- a/basic/source/app/appwin.cxx
+++ b/basic/source/app/appwin.cxx
@@ -226,7 +226,7 @@ long AppWin::PreNotify( NotifyEvent& rNEvt )
     if ( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN )
         Activate();
     if ( rNEvt.GetType() == EVENT_GETFOCUS )
-        if ( pFrame->pList->Last() != this )
+        if ( pFrame->pList->back() != this )
             Activate();
     return FALSE;		// Der event soll weiter verarbeitet werden
 }
diff --git a/basic/source/app/appwin.hxx b/basic/source/app/appwin.hxx
index ef36360..efd2dd8 100644
--- a/basic/source/app/appwin.hxx
+++ b/basic/source/app/appwin.hxx
@@ -2,7 +2,7 @@
 /*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
@@ -35,6 +35,8 @@
 #include "app.hxx"
 #include "dataedit.hxx"
 
+#include <vector>
+
 typedef USHORT QueryBits;
 #define QUERY_NONE				( QueryBits ( 0x00 ) )
 #define QUERY_DIRTY				( QueryBits ( 0x01 ) )
@@ -75,7 +77,6 @@ protected:
 
     short nId;						// ID-Nummer( "Unnamed n" )
     BasicFrame* pFrame;				// Parent-Window
-//	Icon* pIcon;					// Document icon
     String aFind;					// Search string
     String aReplace;				// Replace string
     BOOL bFind;						// TRUE if search not replace
@@ -133,7 +134,7 @@ public:
     void SetWinId( USHORT nWId ) { nWinId = nWId; }
 };
 
-DECLARE_LIST( EditList, AppWin* )
+typedef ::std::vector< AppWin* > EditList;
 
 #endif
 
diff --git a/basic/source/app/status.cxx b/basic/source/app/status.cxx
index 2b1ee2a..f46675c 100644
--- a/basic/source/app/status.cxx
+++ b/basic/source/app/status.cxx
@@ -2,7 +2,7 @@
 /*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
@@ -113,7 +113,7 @@ void StatusLine::LoadTaskToolBox()
         Window* pWin = pFrame->FindWin( pWinMenu->GetItemId( nFirstWinPos ) );
 
         if ( pWin )
-            pTaskToolBox->UpdateTask( Image(), pWin->GetText(), pWin == pFrame->pList->Last() && !( pFrame->pList->Last()->GetWinState() & TT_WIN_STATE_HIDE ) );
+            pTaskToolBox->UpdateTask( Image(), pWin->GetText(), pWin == pFrame->pList->back() && !( pFrame->pList->back()->GetWinState() & TT_WIN_STATE_HIDE ) );
 
         nFirstWinPos++;
     }
-- 
1.7.3.1

