CoreUtils/Directory.h

54 lines
915 B
C++

#ifndef __Directory_h__
#define __Directory_h__
#include "includes"
#include "DirectoryEntry.h"
namespace coreutils {
class Directory {
public:
Directory(std::string path) {
dir = opendir(path.c_str());
if(dir) {
struct dirent *entry = readdir(dir);
while(entry) {
directory.emplace(std::string(entry->d_name), entry);
entry = readdir(dir);
}
}
if(directory.size() > 0)
cursor = directory.begin();
}
~Directory() {}
bool eod() {
return cursor == directory.end();
}
DirectoryEntry get() {
if(cursor == directory.end())
return NULL;
return cursor->second;
}
void next() {
++cursor;
}
private:
DIR *dir;
std::map<std::string, DirectoryEntry> directory;
std::map<std::string, DirectoryEntry>::iterator cursor;
};
}
#endif