Listing 1: FileFindDriver.h
Interface for the CFileFindDriver class
// Code written by Graham Pearson, who can be reached at [email protected] // FileFindDriver.h: interface for the CFileFindDriver class // ////////////////////////////////////////////////////////////////////// #if !defined(FILEFINDDRIVER_H) #define FILEFINDDRIVER_H #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ////////////////////////////////////////////////////////////////////// // We need a "forward" reference to this private class class CSearchObject; class CFileFindDriver { // Constructor arguments const CString m_sSearchDir; CStringArray m_sFileSpecArray; const BOOL m_bRecurse; // Dynamic list of objects derived from CSearchObject CTypedPtrList<CPtrList, CSearchObject*> m_searchList; // Pointer to current CFileFind object in the above list const CFileFind* m_pFileFind; // List of all directories recursed into since construction // or since the most-recent call to First() CStringList m_sSearchDirList; // Number of files found during this search that match // at least one of the entries in m_sFileSpecArray int m_iFilesFound; // Member variables used to make sure we don't return // a specific file more than once during our search CStringList m_foundList; int m_iSpecArrayPos; public: CFileFindDriver(const CString& sSearchDir, const CString& sSearchSpec, BOOL bRecurse); CFileFindDriver(const CString& sSearchDir, const CStringArray& sFileSpecArray, BOOL bRecurse); ~CFileFindDriver(); // Get current CFileFind object const CFileFind* GetFileFind() const { return m_pFileFind; } // Navigate through files BOOL First(); BOOL Next(); // Next, ++ style const CFileFindDriver& operator++(int) { Next(); return *this; } // Return a list of all directories searched since // construction or since the most-recent call to First() void GetSearchDirList(CStringList& sSearchDirList) const; // Return number of files found since construction or since // the most-recent call to First() that match the search criteria int GetFilesFound() const { return m_iFilesFound; } private: void EmptySearchList(); }; ////////////////////////////////////////////////////////////////////// #endif // !defined(FILEFINDDRIVER_H)