summaryrefslogtreecommitdiffstats
path: root/tools/slang-test/directory-util.cpp
blob: d52ef9c92a2102883fdf8981d041b89bafc0156d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 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);
}