diff options
author | Joseph Powers <jpowers27@cox.net> | 2011-01-24 21:36:59 -0800 |
---|---|---|
committer | Joseph Powers <jpowers27@cox.net> | 2011-01-24 21:36:59 -0800 |
commit | 1b55280819cdf88009be023e46f40d9f0d52a952 (patch) | |
tree | e137cc8759c1f2fed48fbd47817aae17f22881c9 /rsc | |
parent | fa5ddda2406ec23d88dd38f59b80c4463fbbc873 (diff) |
Remove DECLARE_LIST( RscDependList, RscDepend* )
Diffstat (limited to 'rsc')
-rw-r--r-- | rsc/inc/rscdef.hxx | 8 | ||||
-rw-r--r-- | rsc/source/parser/rscdb.cxx | 5 | ||||
-rw-r--r-- | rsc/source/rsc/rsc.cxx | 17 | ||||
-rw-r--r-- | rsc/source/tools/rscdef.cxx | 65 |
4 files changed, 45 insertions, 50 deletions
diff --git a/rsc/inc/rscdef.hxx b/rsc/inc/rscdef.hxx index 7a8cf52b4017..3e6c21288fbe 100644 --- a/rsc/inc/rscdef.hxx +++ b/rsc/inc/rscdef.hxx @@ -200,10 +200,11 @@ public: RscDepend( ULONG lIncKey ){ lKey = lIncKey; }; ULONG GetFileKey(){ return lKey; } }; -DECLARE_LIST( RscDependList, RscDepend * ) + +typedef ::std::vector< RscDepend* > RscDependList; // Tabelle die alle Dateinamen enthaelt -class RscFile : public RscDependList +class RscFile { friend class RscFileTab; BOOL bIncFile; // Ist es eine Include-Datei @@ -214,10 +215,11 @@ public: ByteString aFileName; // Name der Datei ByteString aPathName; // Pfad und Name der Datei RscDefineList aDefLst; // Liste der Defines + RscDependList aDepLst; // List of Depend RscFile(); ~RscFile(); - BOOL InsertDependFile( ULONG lDepFile, ULONG lPos ); + BOOL InsertDependFile( ULONG lDepFile, size_t lPos ); void RemoveDependFile( ULONG lDepFile ); BOOL Depend( ULONG lDepend, ULONG lFree ); void SetIncFlag(){ bIncFile = TRUE; }; diff --git a/rsc/source/parser/rscdb.cxx b/rsc/source/parser/rscdb.cxx index 03e8874eadad..18c744cd3080 100644 --- a/rsc/source/parser/rscdb.cxx +++ b/rsc/source/parser/rscdb.cxx @@ -436,9 +436,9 @@ void RscTypCont :: WriteInc( FILE * fOutput, ULONG lFileKey ) pFName = aFileTab.Get( lFileKey ); if( pFName ) { - pDep = pFName->First(); - while( pDep ) + for ( size_t i = 0, n = pFName->aDepLst.size(); i < n; ++i ) { + pDep = pFName->aDepLst[ i ]; if( pDep->GetFileKey() != lFileKey ) { pFile = aFileTab.GetFile( pDep->GetFileKey() ); @@ -449,7 +449,6 @@ void RscTypCont :: WriteInc( FILE * fOutput, ULONG lFileKey ) pFile->aFileName.GetBuffer() ); } } - pDep = pFName->Next(); }; }; }; diff --git a/rsc/source/rsc/rsc.cxx b/rsc/source/rsc/rsc.cxx index 00871a8be16d..7a8a32189de0 100644 --- a/rsc/source/rsc/rsc.cxx +++ b/rsc/source/rsc/rsc.cxx @@ -667,16 +667,15 @@ ERRTYPE RscCompiler :: IncludeParser( ULONG lFileKey ) fclose( finput ); // Include-Pfad durchsuchen - pDep = pFName->First(); - while( pDep ) + for ( size_t i = 0, n = pFName->aDepLst.size(); i < n; ++i ) { + pDep = pFName->aDepLst[ i ]; pFNTmp = pTC->aFileTab.GetFile( pDep->GetFileKey() ); - pDep = pFName->Next(); } - pDep = pFName->First(); - while( pDep ) + for ( size_t i = 0, n = pFName->aDepLst.size(); i < n; ++i ) { + pDep = pFName->aDepLst[ i ]; pFNTmp = pTC->aFileTab.GetFile( pDep->GetFileKey() ); // Kein Pfad und Include Datei if( pFNTmp && !pFNTmp->bLoaded ) @@ -688,7 +687,6 @@ ERRTYPE RscCompiler :: IncludeParser( ULONG lFileKey ) else aError = ERR_OPENFILE; } - pDep = pFName->Next(); }; }; }; @@ -718,12 +716,11 @@ ERRTYPE RscCompiler :: ParseOneFile( ULONG lFileKey, //Include-Dateien vorher lesen pFName->bLoaded = TRUE; //Endlos Rekursion vermeiden - pDep = pFName->First(); - while( pDep && aError.IsOk() ) + + for ( size_t i = 0; i < pFName->aDepLst.size() && aError.IsOk(); ++i ) { + pDep = pFName->aDepLst[ i ]; aError = ParseOneFile( pDep->GetFileKey(), pOutputFile, pContext ); - pFName->Seek( pDep ); - pDep = pFName->Next(); } if( aError.IsError() ) diff --git a/rsc/source/tools/rscdef.cxx b/rsc/source/tools/rscdef.cxx index 870e5bdd6e65..71383306e982 100644 --- a/rsc/source/tools/rscdef.cxx +++ b/rsc/source/tools/rscdef.cxx @@ -606,13 +606,10 @@ RscFile :: RscFile(){ |* RscFile::~RscFile() |* *************************************************************************/ -RscFile :: ~RscFile(){ - RscDepend * pDep = Remove( (ULONG)0 ); - - while( pDep ){ - delete pDep; - pDep = Remove( (ULONG)0 ); - } +RscFile :: ~RscFile() { + for ( size_t i = 0, n = aDepLst.size(); i < n; ++i ) + delete aDepLst[ i ]; + aDepLst.clear(); //von hinten nach vorne ist besser wegen der Abhaengigkeiten //Objekte zerstoeren sich, wenn Referenzzaehler NULL @@ -631,19 +628,19 @@ RscFile :: ~RscFile(){ BOOL RscFile::Depend( ULONG lDepend, ULONG lFree ){ RscDepend * pDep; - pDep = Last(); - while( pDep ){ - if( pDep->GetFileKey() == lDepend ){ - while( pDep ){ + for ( size_t i = aDepLst.size(); i > 0; ) + { + pDep = aDepLst[ --i ]; + if( pDep->GetFileKey() == lDepend ) { + for ( size_t j = i ? --i : 0; j > 0; ) + { + pDep = aDepLst[ --j ]; if( pDep->GetFileKey() == lFree ) return TRUE; - pDep = Prev(); } return FALSE; } - pDep = Prev(); - }; - + } return TRUE; } @@ -652,25 +649,25 @@ BOOL RscFile::Depend( ULONG lDepend, ULONG lFree ){ |* RscFile::InsertDependFile() |* *************************************************************************/ -BOOL RscFile :: InsertDependFile( ULONG lIncFile, ULONG lPos ) +BOOL RscFile :: InsertDependFile( ULONG lIncFile, size_t lPos ) { - RscDepend * pDep; - - pDep = First(); - while( pDep ){ + for ( size_t i = 0, n = aDepLst.size(); i < n; ++i ) + { + RscDepend* pDep = aDepLst[ i ]; if( pDep->GetFileKey() == lIncFile ) return TRUE; - pDep = Next(); } // Current-Zeiger steht auf letztem Element - if( lPos >= Count() ){ //letztes Element muss immer letztes bleiben + if( lPos >= aDepLst.size() ) { //letztes Element muss immer letztes bleiben // Abhaengigkeit vor der letzten Position eintragen - Insert( new RscDepend( lIncFile ) ); + aDepLst.push_back( new RscDepend( lIncFile ) ); + } + else { + RscDependList::iterator it = aDepLst.begin(); + ::std::advance( it, lPos ); + aDepLst.insert( it, new RscDepend( lIncFile ) ); } - else - Insert( new RscDepend( lIncFile ), lPos ); - return TRUE; } @@ -681,15 +678,15 @@ BOOL RscFile :: InsertDependFile( ULONG lIncFile, ULONG lPos ) *************************************************************************/ void RscFile :: RemoveDependFile( ULONG lDepFile ) { - - RscDepend * pDep = Last(); - - while( pDep ){ - if( pDep->GetFileKey() == lDepFile ){ - Remove( pDep ); - delete pDep; + for ( size_t i = aDepLst.size(); i > 0; ) + { + RscDepend* pDep = aDepLst[ --i ]; + if( pDep->GetFileKey() == lDepFile ) { + RscDependList::iterator it = aDepLst.begin(); + ::std::advance( it, i ); + delete *it; + aDepLst.erase( it ); } - pDep = Prev(); } } |