mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
88 lines
1.8 KiB
C++
88 lines
1.8 KiB
C++
#include "FileEnumerator.h"
|
|
|
|
USING_NS_BF;
|
|
|
|
String FileEnumeratorEntry::GetFilePath() const
|
|
{
|
|
char outName[4096];
|
|
int outSize = 4096;
|
|
BfpFindFileData_GetFileName(mFindData, outName, &outSize, NULL);
|
|
return mDirPath + "/" + outName;
|
|
}
|
|
|
|
String FileEnumeratorEntry::GetFileName() const
|
|
{
|
|
char outName[4096];
|
|
int outSize = 4096;
|
|
BfpFindFileData_GetFileName(mFindData, outName, &outSize, NULL);
|
|
return outName;
|
|
}
|
|
|
|
const FileEnumerator::Iterator& FileEnumerator::Iterator::operator++()
|
|
{
|
|
BF_ASSERT(mIdx == mFileEnumerator->mIdx);
|
|
mFileEnumerator->Next();
|
|
mIdx = mFileEnumerator->mIdx;
|
|
return *this;
|
|
}
|
|
|
|
bool FileEnumerator::Iterator::operator==(const FileEnumerator::Iterator& rhs)
|
|
{
|
|
return
|
|
(rhs.mFileEnumerator == mFileEnumerator) &&
|
|
(rhs.mIdx == mIdx);
|
|
}
|
|
|
|
bool FileEnumerator::Iterator::operator!=(const FileEnumerator::Iterator& rhs)
|
|
{
|
|
return
|
|
(rhs.mFileEnumerator != mFileEnumerator) ||
|
|
(rhs.mIdx != mIdx);
|
|
}
|
|
|
|
const FileEnumerator::FileEnumeratorEntry& FileEnumerator::Iterator::operator*()
|
|
{
|
|
return *mFileEnumerator;
|
|
}
|
|
|
|
FileEnumerator::FileEnumerator(const String& dirPath, Flags flags)
|
|
{
|
|
mDirPath = dirPath;
|
|
mFindData = BfpFindFileData_FindFirstFile((dirPath + "/*.*").c_str(), (BfpFindFileFlags)flags, NULL);
|
|
mFlags = flags;
|
|
if (mFindData != NULL)
|
|
mIdx = 0;
|
|
else
|
|
mIdx = -1;
|
|
}
|
|
|
|
FileEnumerator::~FileEnumerator()
|
|
{
|
|
if (mFindData != NULL)
|
|
BfpFindFileData_Release(mFindData);
|
|
}
|
|
|
|
bool FileEnumerator::Next()
|
|
{
|
|
if (BfpFindFileData_FindNextFile(mFindData))
|
|
mIdx++;
|
|
else
|
|
mIdx = -1;
|
|
return mIdx != -1;
|
|
}
|
|
|
|
FileEnumerator::Iterator FileEnumerator::begin()
|
|
{
|
|
Iterator itr;
|
|
itr.mFileEnumerator = this;
|
|
itr.mIdx = mIdx;
|
|
return itr;
|
|
}
|
|
|
|
FileEnumerator::Iterator FileEnumerator::end()
|
|
{
|
|
Iterator itr;
|
|
itr.mFileEnumerator = this;
|
|
itr.mIdx = -1;
|
|
return itr;
|
|
}
|