@@ -33,6 +33,23 @@ clang::TranslationUnit::TranslationUnit(Index &index, const std::string &file_pa
3333 parse (index, file_path, command_line_args, buffers);
3434}
3535
36+ clang::TranslationUnit::TranslationUnit (Index &index, const std::string &file_path,
37+ const std::vector<std::string> &command_line_args,
38+ const std::string &buffer, unsigned flags) {
39+ std::vector<const char *> args;
40+ for (auto &a: command_line_args) {
41+ args.push_back (a.c_str ());
42+ }
43+
44+ CXUnsavedFile files[1 ];
45+ files[0 ].Filename =file_path.c_str ();
46+ files[0 ].Contents =buffer.c_str ();
47+ files[0 ].Length =buffer.size ();
48+
49+ cx_tu = clang_parseTranslationUnit (index.cx_index , file_path.c_str (), args.data (),
50+ args.size (), files, 1 , flags);
51+ }
52+
3653clang::TranslationUnit::TranslationUnit (clang::Index &index, const std::string &file_path,
3754 const std::vector<std::string> &command_line_args,
3855 const std::map<std::string, std::string> &buffers, unsigned flags) {
@@ -58,6 +75,18 @@ void clang::TranslationUnit::parse(Index &index, const std::string &file_path,
5875 args.size (), files.data (), files.size (), flags);
5976}
6077
78+ int clang::TranslationUnit::ReparseTranslationUnit (const std::string &buffer, unsigned flags) {
79+ CXUnsavedFile files[1 ];
80+
81+ auto file_path=clang::to_string (clang_getTranslationUnitSpelling (cx_tu));
82+
83+ files[0 ].Filename =file_path.c_str ();
84+ files[0 ].Contents =buffer.c_str ();
85+ files[0 ].Length =buffer.size ();
86+
87+ return clang_reparseTranslationUnit (cx_tu, 1 , files, flags);
88+ }
89+
6190int clang::TranslationUnit::ReparseTranslationUnit (const std::map<std::string, std::string> &buffers, unsigned flags) {
6291 std::vector<CXUnsavedFile> files;
6392 for (auto &buffer : buffers) {
@@ -74,6 +103,12 @@ unsigned clang::TranslationUnit::DefaultFlags() {
74103 return CXTranslationUnit_CacheCompletionResults | CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete | CXTranslationUnit_IncludeBriefCommentsInCodeCompletion;
75104}
76105
106+ clang::CodeCompleteResults clang::TranslationUnit::get_code_completions (const std::string &buffer,
107+ unsigned line_number, unsigned column) {
108+ clang::CodeCompleteResults results (cx_tu, buffer, line_number, column);
109+ return results;
110+ }
111+
77112clang::CodeCompleteResults clang::TranslationUnit::get_code_completions (const std::map<std::string, std::string> &buffers,
78113 unsigned line_number, unsigned column) {
79114 auto path=clang::to_string (clang_getTranslationUnitSpelling (cx_tu));
0 commit comments