diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-12-11 07:42:05 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-12-11 07:42:05 +0100 |
| commit | ed419140280553b070943b7ba539120a26ff5686 (patch) | |
| tree | 3d134977a6dfae71a45c318305166d044b50320d /include/wanda/filesystem.hpp | |
| parent | d3e691c9200b7b782c8acf17468068a699588a73 (diff) | |
| download | wanda-ed419140280553b070943b7ba539120a26ff5686.tar.xz wanda-ed419140280553b070943b7ba539120a26ff5686.zip | |
wanda: restructure directory hierarchy
Diffstat (limited to 'include/wanda/filesystem.hpp')
| -rw-r--r-- | include/wanda/filesystem.hpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/wanda/filesystem.hpp b/include/wanda/filesystem.hpp new file mode 100644 index 0000000..1975bc5 --- /dev/null +++ b/include/wanda/filesystem.hpp @@ -0,0 +1,39 @@ +/** + * @file filesystem.hpp + * @author Felix Morgner (felix.morgner@gmail.com) + * @since 1.0.0 + */ + +#ifndef WANDA_FILESYSTEM_HPP +#define WANDA_FILESYSTEM_HPP + +#include <filesystem> +#include <optional> +#include <vector> + +namespace wanda +{ + /** + * @brief Covenience alias for path lists + */ + using path_list = std::vector<std::filesystem::path>; + + /** + * @brief The default scan filter, allowing only regular files to pass + */ + constexpr inline auto default_filter = [](std::filesystem::path const & path) { + return is_regular_file(path); + }; + + /** + * @brief Scan the given folder for files + */ + std::optional<path_list> scan(std::filesystem::path folder, bool(filter)(std::filesystem::path const &) = default_filter); + + /** + * @brief Pick a random path from the given list + */ + std::filesystem::path random_pick(path_list const & paths); +} // namespace wanda + +#endif
\ No newline at end of file |
