summaryrefslogtreecommitdiffstats
path: root/tools/slang-test/directory-util.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-08-05 16:12:55 -0400
committerGitHub <noreply@github.com>2020-08-05 16:12:55 -0400
commit3231048b328551edff9a923dec3f7bd46ed5aff8 (patch)
tree844e82463e964afb04bca1deb85acfda1bdc56a2 /tools/slang-test/directory-util.cpp
parente713b56a63dcbf945e3e0e6d82666318795c74ff (diff)
Refactor enumerating directory contents (#1478)
* Use m_style for OSFindFilesResult * Refactor of FindFilesResult. * Fixes on linux for FindFiles. * Simplify FindFilesState, and linux support for pattern matching. * Small fixes to linux FindFilesState * Fix typo on linux FindFiles * Fix typo in linux FindFiles. * Renamed some variables, and improved comments on FindFiles. * Improve comments on FildFiles * Small improvements around FindFiles. * Refactor FindFiles again.. into a visitor and function in Path. * Fix some problems on linux. * Fix linux typo. * Renamed os -> find-file-util * find-file-utl -> directory-util Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'tools/slang-test/directory-util.cpp')
-rw-r--r--tools/slang-test/directory-util.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/slang-test/directory-util.cpp b/tools/slang-test/directory-util.cpp
new file mode 100644
index 000000000..39d06a2a2
--- /dev/null
+++ b/tools/slang-test/directory-util.cpp
@@ -0,0 +1,29 @@
+// find-file-util.cpp
+#include "directory-util.h"
+
+#include "slang-com-helper.h"
+
+using namespace Slang;
+
+/* static */SlangResult DirectoryUtil::findDirectories(const Slang::String& directoryPath, Slang::List<Slang::String>& outPaths)
+{
+ outPaths.clear();
+ CombinePathVisitor visitor(directoryPath, Path::TypeFlag::Directory);
+ SLANG_RETURN_ON_FAIL(Path::find(directoryPath, nullptr, &visitor));
+ outPaths.swapWith(visitor.m_paths);
+ return SLANG_OK;
+}
+
+/* static */SlangResult DirectoryUtil::findFilesMatchingPattern(const Slang::String& directoryPath, const char* pattern, Slang::List<Slang::String>& outPaths)
+{
+ outPaths.clear();
+ CombinePathVisitor visitor(directoryPath, Path::TypeFlag::File);
+ SLANG_RETURN_ON_FAIL(Path::find(directoryPath, pattern, &visitor));
+ outPaths.swapWith(visitor.m_paths);
+ return SLANG_OK;
+}
+
+/* static */SlangResult DirectoryUtil::findFiles(const Slang::String& directoryPath, Slang::List<Slang::String>& outPaths)
+{
+ return findFilesMatchingPattern(directoryPath, nullptr, outPaths);
+}