//===- DependencyScanningTool.h - clang-scan-deps service -----------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLING_DEPENDENCY_SCANNING_TOOL_H #define LLVM_CLANG_TOOLING_DEPENDENCY_SCANNING_TOOL_H #include "clang/Tooling/DependencyScanning/DependencyScanningService.h" #include "clang/Tooling/DependencyScanning/DependencyScanningWorker.h" #include "clang/Tooling/JSONCompilationDatabase.h" #include namespace clang{ namespace tooling{ namespace dependencies{ /// The high-level implementation of the dependency discovery tool that runs on /// an individual worker thread. class DependencyScanningTool { public: /// Construct a dependency scanning tool. DependencyScanningTool(DependencyScanningService &Service); /// Print out the dependency information into a string using the dependency /// file format that is specified in the options (-MD is the default) and /// return it. /// /// \returns A \c StringError with the diagnostic output if clang errors /// occurred, dependency file contents otherwise. llvm::Expected getDependencyFile(const tooling::CompilationDatabase &Compilations, StringRef CWD); private: const ScanningOutputFormat Format; DependencyScanningWorker Worker; }; } // end namespace dependencies } // end namespace tooling } // end namespace clang #endif // LLVM_CLANG_TOOLING_DEPENDENCY_SCANNING_TOOL_H