From af120041b68f2b9221bdd3cf0047f7e20705aa5a Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 17:04:41 -0800 Subject: Move file functions to vcpkg_Files.h --- toolsrc/include/vcpkg_Files.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'toolsrc/include') diff --git a/toolsrc/include/vcpkg_Files.h b/toolsrc/include/vcpkg_Files.h index 445713965..4aa9b956a 100644 --- a/toolsrc/include/vcpkg_Files.h +++ b/toolsrc/include/vcpkg_Files.h @@ -2,9 +2,12 @@ #include "expected.h" #include +#include namespace vcpkg {namespace Files { + namespace fs = std::tr2::sys; + static const char* FILESYSTEM_INVALID_CHARACTERS = R"(\/:*?"<>|)"; void check_is_directory(const std::tr2::sys::path& dirpath); @@ -14,4 +17,28 @@ namespace vcpkg {namespace Files expected get_contents(const std::tr2::sys::path& file_path) noexcept; std::tr2::sys::path find_file_recursively_up(const std::tr2::sys::path& starting_dir, const std::string& filename); + + template + void non_recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector* output) + { + std::copy_if(fs::directory_iterator(dir), fs::directory_iterator(), std::back_inserter(*output), predicate); + } + + template + void recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector* output) + { + std::copy_if(fs::recursive_directory_iterator(dir), fs::recursive_directory_iterator(), std::back_inserter(*output), predicate); + } + + template + std::vector recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate) + { + std::vector v; + recursive_find_matching_paths_in_dir(dir, predicate, &v); + return v; + } + + void recursive_find_files_with_extension_in_dir(const fs::path& dir, const std::string& extension, std::vector* output); + + std::vector recursive_find_files_with_extension_in_dir(const fs::path& dir, const std::string& extension); }} -- cgit v1.2.3