Skip to content
Snippets Groups Projects
Commit 19ff02de authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add list_directory_recursive()

parent 9d6e19d5
No related branches found
No related tags found
No related merge requests found
......@@ -2,31 +2,51 @@
#include <algorithm>
namespace simox
{
std::vector<fs::path> fs::list_directory(const path& directory, bool local, bool sort)
namespace impl
{
std::vector<path> entries;
for (const auto& entry : directory_iterator(directory))
{
entries.push_back(entry.path());
}
if (sort)
{
std::sort(entries.begin(), entries.end());
}
if (local)
template <class DirectoryIteratorT>
std::vector<fs::path>
list_directory(const fs::path& directory, bool local, bool sort)
{
for (auto& entry : entries)
std::vector<fs::path> entries;
for (const auto& entry : DirectoryIteratorT(directory))
{
entries.push_back(entry.path());
}
if (sort)
{
entry = entry.filename();
std::sort(entries.begin(), entries.end());
}
if (local)
{
for (auto& entry : entries)
{
entry = entry.filename();
}
}
return entries;
}
return entries;
} // namespace impl
std::vector<fs::path>
fs::list_directory(const path& directory, bool local, bool sort)
{
return impl::list_directory<std::filesystem::directory_iterator>(directory, local, sort);
}
}
std::vector<std::filesystem::__cxx11::path>
fs::list_directory_recursive(const path& directory, bool local, bool sort)
{
return impl::list_directory<std::filesystem::recursive_directory_iterator>(
directory, local, sort);
}
} // namespace simox
......@@ -3,7 +3,6 @@
#include <filesystem>
#include <vector>
namespace simox::fs
{
using namespace std::filesystem;
......@@ -18,5 +17,11 @@ namespace simox::fs
* @return The entries in `directory`.
*/
std::vector<path> list_directory(const path& directory, bool local = false, bool sort = true);
}
/**
* @brief Same as list_directory(), but recurses into subdirectories.
*/
std::vector<path>
list_directory_recursive(const path& directory, bool local = false, bool sort = true);
} // namespace simox::fs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment