#include "IDirectoryIterator.h" #include IDirectoryIterator::IDirectoryIterator(const char * path, const char * match) :m_searchHandle(INVALID_HANDLE_VALUE), m_done(false) { if(!match) match = "*"; strcpy_s(m_path, sizeof(m_path), path); char wildcardPath[MAX_PATH]; sprintf_s(wildcardPath, sizeof(wildcardPath), "%s\\%s", path, match); m_searchHandle = FindFirstFile(wildcardPath, &m_result); if(m_searchHandle == INVALID_HANDLE_VALUE) m_done = true; } IDirectoryIterator::~IDirectoryIterator() { if(m_searchHandle != INVALID_HANDLE_VALUE) FindClose(m_searchHandle); } void IDirectoryIterator::GetFullPath(char * out, UInt32 outLen) { sprintf_s(out, outLen, "%s\\%s", m_path, m_result.cFileName); } std::string IDirectoryIterator::GetFullPath(void) { return std::string(m_path) + "\\" + std::string(m_result.cFileName); } void IDirectoryIterator::Next(void) { BOOL result = FindNextFile(m_searchHandle, &m_result); if(!result) m_done = true; } bool IDirectoryIterator::Done(void) { return m_done; }