Filesystem

Directory scanning and file enumeration utilities.

#include <dftracer/utils/utilities/filesystem/directory_scanner.h>
#include <dftracer/utils/utilities/filesystem/pattern_directory_scanner.h>

DirectoryScannerUtility

Scans directories and returns file entries.

Input:

struct DirectoryScannerUtilityInput {
    fs::path directory;
    bool recursive = false;

    static DirectoryScannerUtilityInput from_directory(const fs::path& dir);
    DirectoryScannerUtilityInput& with_recursive(bool value);
};

Output:

struct FileEntry {
    fs::path path;
    std::size_t size;
    bool is_directory;
    bool is_regular_file;
};

Example:

DirectoryScannerUtility scanner;
auto input = DirectoryScannerUtilityInput::from_directory("/data/traces")
    .with_recursive(true);

std::vector<FileEntry> files = scanner.process(input);

PatternDirectoryScannerUtility

Scans directories with pattern filtering.

Input:

struct PatternDirectoryScannerUtilityInput {
    fs::path directory;
    std::vector<std::string> patterns;  // e.g., {".pfw", ".pfw.gz"}
    bool recursive = false;

    static PatternDirectoryScannerUtilityInput from_directory(const fs::path& dir);
    PatternDirectoryScannerUtilityInput& with_patterns(std::vector<std::string> p);
    PatternDirectoryScannerUtilityInput& with_recursive(bool value);
};

Example:

PatternDirectoryScannerUtility scanner;
auto input = PatternDirectoryScannerUtilityInput::from_directory("/data")
    .with_patterns({".pfw", ".pfw.gz"})
    .with_recursive(true);

std::vector<FileEntry> trace_files = scanner.process(input);