Index: include/lldb/Utility/FileSpec.h =================================================================== --- include/lldb/Utility/FileSpec.h +++ include/lldb/Utility/FileSpec.h @@ -562,7 +562,12 @@ typedef std::function - DirectoryCallback; + EnumerateDirectoryCallbackFnType; + + static void EnumerateDirectory(llvm::StringRef dir_path, + bool find_directories, bool find_files, + bool find_other, + EnumerateDirectoryCallbackFnType callback); protected: //------------------------------------------------------------------ Index: source/Utility/FileSpec.cpp =================================================================== --- source/Utility/FileSpec.cpp +++ source/Utility/FileSpec.cpp @@ -640,6 +640,18 @@ bool find_other, EnumerateDirectoryCallbackType callback, void *callback_baton) { + auto callbackLambda = [=](llvm::sys::fs::file_type file_type, + const FileSpec &spec) -> EnumerateDirectoryResult { + return callback(callback_baton, file_type, spec); + }; + return EnumerateDirectory(dir_path, find_directories, find_files, find_other, + callbackLambda); +} + +void FileSpec::EnumerateDirectory(llvm::StringRef dir_path, + bool find_directories, bool find_files, + bool find_other, + EnumerateDirectoryCallbackFnType callback) { namespace fs = llvm::sys::fs; std::error_code EC; fs::recursive_directory_iterator Iter(dir_path, EC); @@ -657,7 +669,7 @@ continue; FileSpec Spec(Item.path(), false); - auto Result = callback(callback_baton, Status->type(), Spec); + auto Result = callback(Status->type(), Spec); if (Result == eEnumerateDirectoryResultQuit) return; if (Result == eEnumerateDirectoryResultNext) {