aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Tooling/CompilationDatabase.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2012-07-13 12:31:45 +0000
committerManuel Klimek <klimek@google.com>2012-07-13 12:31:45 +0000
commit60b801619742af8bb5a9c949d6a979e8f48be43b (patch)
treedf7895c27b79b0e77b477fdda815810ac55929e2 /clang/lib/Tooling/CompilationDatabase.cpp
parent5a5928a5ebad0dff089ce06e3d9200a6392f647d (diff)
downloadllvm-60b801619742af8bb5a9c949d6a979e8f48be43b.zip
llvm-60b801619742af8bb5a9c949d6a979e8f48be43b.tar.gz
llvm-60b801619742af8bb5a9c949d6a979e8f48be43b.tar.bz2
Allows retrieving all files in a CompilationDatabase.
Patch by Tobias Koenig, some test changes by myself. llvm-svn: 160167
Diffstat (limited to 'clang/lib/Tooling/CompilationDatabase.cpp')
-rw-r--r--clang/lib/Tooling/CompilationDatabase.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Tooling/CompilationDatabase.cpp b/clang/lib/Tooling/CompilationDatabase.cpp
index d54a5e7..802a4c3 100644
--- a/clang/lib/Tooling/CompilationDatabase.cpp
+++ b/clang/lib/Tooling/CompilationDatabase.cpp
@@ -199,6 +199,11 @@ FixedCompilationDatabase::getCompileCommands(StringRef FilePath) const {
return Result;
}
+std::vector<std::string>
+FixedCompilationDatabase::getAllFiles() const {
+ return std::vector<std::string>();
+}
+
JSONCompilationDatabase *
JSONCompilationDatabase::loadFromFile(StringRef FilePath,
std::string &ErrorMessage) {
@@ -249,6 +254,21 @@ JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const {
return Commands;
}
+std::vector<std::string>
+JSONCompilationDatabase::getAllFiles() const {
+ std::vector<std::string> Result;
+
+ llvm::StringMap< std::vector<CompileCommandRef> >::const_iterator
+ CommandsRefI = IndexByFile.begin();
+ const llvm::StringMap< std::vector<CompileCommandRef> >::const_iterator
+ CommandsRefEnd = IndexByFile.end();
+ for (; CommandsRefI != CommandsRefEnd; ++CommandsRefI) {
+ Result.push_back(CommandsRefI->first().str());
+ }
+
+ return Result;
+}
+
bool JSONCompilationDatabase::parse(std::string &ErrorMessage) {
llvm::yaml::document_iterator I = YAMLStream.begin();
if (I == YAMLStream.end()) {