diff options
author | Manuel Klimek <klimek@google.com> | 2012-07-13 12:31:45 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2012-07-13 12:31:45 +0000 |
commit | 60b801619742af8bb5a9c949d6a979e8f48be43b (patch) | |
tree | df7895c27b79b0e77b477fdda815810ac55929e2 /clang/lib/Tooling/CompilationDatabase.cpp | |
parent | 5a5928a5ebad0dff089ce06e3d9200a6392f647d (diff) | |
download | llvm-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.cpp | 20 |
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()) { |