summaryrefslogtreecommitdiff
path: root/rsc/source/tools
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/source/tools
parentfa5ddda2406ec23d88dd38f59b80c4463fbbc873 (diff)
Remove DECLARE_LIST( RscDependList, RscDepend* )
Diffstat (limited to 'rsc/source/tools')
-rw-r--r--rsc/source/tools/rscdef.cxx65
1 files changed, 31 insertions, 34 deletions
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();
}
}