summaryrefslogtreecommitdiff
path: root/rsc
diff options
context:
space:
mode:
authorJoseph Powers <jpowers27@cox.net>2011-01-24 21:36:59 -0800
committerJoseph Powers <jpowers27@cox.net>2011-01-24 21:36:59 -0800
commit1b55280819cdf88009be023e46f40d9f0d52a952 (patch)
treee137cc8759c1f2fed48fbd47817aae17f22881c9 /rsc
parentfa5ddda2406ec23d88dd38f59b80c4463fbbc873 (diff)
Remove DECLARE_LIST( RscDependList, RscDepend* )
Diffstat (limited to 'rsc')
-rw-r--r--rsc/inc/rscdef.hxx8
-rw-r--r--rsc/source/parser/rscdb.cxx5
-rw-r--r--rsc/source/rsc/rsc.cxx17
-rw-r--r--rsc/source/tools/rscdef.cxx65
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();
}
}