// LOL THIS IS BAD! void cFileDBCtrl::GetFilesForAccessLevel( DWORD dwAccessLevel, cFileInfo *** pppFileInfo, DWORD * dwNumberOfFiles ) { std::vector::iterator cfIterStart = m_vFiles.begin(); std::vector::iterator cfIterEnd = m_vFiles.end(); std::vector::iterator cfIter = cfIterStart; DWORD dwCount = 0; cFileInfo ** ppFileInfo = NULL; for( cfIter = cfIterStart; cfIter != cfIterEnd; cfIter++ ) { cFileInfo * pFileInfo = *cfIter; if( pFileInfo->GetAccessLevel() & dwAccessLevel ) { dwCount++; } } ppFileInfo = new cFileInfo*[dwCount]; cFileInfo ** ppFileInfoInc = ppFileInfo; for( cfIter = cfIterStart; cfIter != cfIterEnd; cfIter++ ) { cFileInfo * pFileInfo = *cfIter; if( pFileInfo->GetAccessLevel() & dwAccessLevel ) { *ppFileInfoInc = pFileInfo; ppFileInfoInc++; } } *dwNumberOfFiles = dwCount; *pppFileInfo = ppFileInfo; }