FileEnumerator.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "FileEnumerator.h"
  2. USING_NS_BF;
  3. String FileEnumeratorEntry::GetFilePath() const
  4. {
  5. char outName[4096];
  6. int outSize = 4096;
  7. BfpFindFileData_GetFileName(mFindData, outName, &outSize, NULL);
  8. return mDirPath + "/" + outName;
  9. }
  10. String FileEnumeratorEntry::GetFileName() const
  11. {
  12. char outName[4096];
  13. int outSize = 4096;
  14. BfpFindFileData_GetFileName(mFindData, outName, &outSize, NULL);
  15. return outName;
  16. }
  17. const FileEnumerator::Iterator& FileEnumerator::Iterator::operator++()
  18. {
  19. BF_ASSERT(mIdx == mFileEnumerator->mIdx);
  20. mFileEnumerator->Next();
  21. mIdx = mFileEnumerator->mIdx;
  22. return *this;
  23. }
  24. bool FileEnumerator::Iterator::operator==(const FileEnumerator::Iterator& rhs)
  25. {
  26. return
  27. (rhs.mFileEnumerator == mFileEnumerator) &&
  28. (rhs.mIdx == mIdx);
  29. }
  30. bool FileEnumerator::Iterator::operator!=(const FileEnumerator::Iterator& rhs)
  31. {
  32. return
  33. (rhs.mFileEnumerator != mFileEnumerator) ||
  34. (rhs.mIdx != mIdx);
  35. }
  36. const FileEnumerator::FileEnumeratorEntry& FileEnumerator::Iterator::operator*()
  37. {
  38. return *mFileEnumerator;
  39. }
  40. FileEnumerator::FileEnumerator(const String& dirPath, Flags flags)
  41. {
  42. mDirPath = dirPath;
  43. mFindData = BfpFindFileData_FindFirstFile((dirPath + "/*.*").c_str(), (BfpFindFileFlags)flags, NULL);
  44. mFlags = flags;
  45. if (mFindData != NULL)
  46. mIdx = 0;
  47. else
  48. mIdx = -1;
  49. }
  50. FileEnumerator::~FileEnumerator()
  51. {
  52. if (mFindData != NULL)
  53. BfpFindFileData_Release(mFindData);
  54. }
  55. bool FileEnumerator::Next()
  56. {
  57. if (BfpFindFileData_FindNextFile(mFindData))
  58. mIdx++;
  59. else
  60. mIdx = -1;
  61. return mIdx != -1;
  62. }
  63. FileEnumerator::Iterator FileEnumerator::begin()
  64. {
  65. Iterator itr;
  66. itr.mFileEnumerator = this;
  67. itr.mIdx = mIdx;
  68. return itr;
  69. }
  70. FileEnumerator::Iterator FileEnumerator::end()
  71. {
  72. Iterator itr;
  73. itr.mFileEnumerator = this;
  74. itr.mIdx = -1;
  75. return itr;
  76. }