69 static std::unique_ptr<JSONCompilationDatabase>
70 loadFromFile(StringRef FilePath, std::string &ErrorMessage,
77 static std::unique_ptr<JSONCompilationDatabase>
86 std::vector<CompileCommand>
92 std::vector<std::string>
getAllFiles()
const override;
100 JSONCompilationDatabase(std::unique_ptr<llvm::MemoryBuffer> Database,
102 : Database(std::move(Database)), Syntax(Syntax),
103 YAMLStream(this->Database->getBuffer(), SM) {}
109 bool parse(StringRef BaseDirectory, std::string &ErrorMessage);
119 using CompileCommandRef = std::tuple<StringRef, llvm::yaml::ScalarNode *,
120 std::vector<llvm::yaml::ScalarNode *>,
121 llvm::yaml::ScalarNode *>;
125 std::vector<CompileCommand> &Commands)
const;
128 llvm::StringMap<std::vector<CompileCommandRef>> IndexByFile;
132 std::vector<CompileCommandRef> AllCommands;
136 llvm::StringSet<> Directories;
137 std::unique_ptr<llvm::MemoryBuffer> Database;
140 llvm::yaml::Stream YAMLStream;