Author: teemperor Date: Mon Aug 19 04:49:43 2019 New Revision: 369252 URL: http://llvm.org/viewvc/llvm-project?rev=369252&view=rev Log: [lldb][NFC] Use CompletionRequest in Variable::AutoComplete
Modified: lldb/trunk/source/Symbol/Variable.cpp Modified: lldb/trunk/source/Symbol/Variable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Variable.cpp?rev=369252&r1=369251&r2=369252&view=diff ============================================================================== --- lldb/trunk/source/Symbol/Variable.cpp (original) +++ lldb/trunk/source/Symbol/Variable.cpp Mon Aug 19 04:49:43 2019 @@ -488,24 +488,21 @@ static void PrivateAutoComplete( StackFrame *frame, llvm::StringRef partial_path, const llvm::Twine &prefix_path, // Anything that has been resolved already will be in here - const CompilerType &compiler_type, - StringList &matches, bool &word_complete); + const CompilerType &compiler_type, CompletionRequest &request); static void PrivateAutoCompleteMembers( StackFrame *frame, const std::string &partial_member_name, llvm::StringRef partial_path, const llvm::Twine &prefix_path, // Anything that has been resolved already will be in here - const CompilerType &compiler_type, - StringList &matches, bool &word_complete); + const CompilerType &compiler_type, CompletionRequest &request); static void PrivateAutoCompleteMembers( StackFrame *frame, const std::string &partial_member_name, llvm::StringRef partial_path, const llvm::Twine &prefix_path, // Anything that has been resolved already will be in here - const CompilerType &compiler_type, - StringList &matches, bool &word_complete) { + const CompilerType &compiler_type, CompletionRequest &request) { // We are in a type parsing child members const uint32_t num_bases = compiler_type.GetNumDirectBaseClasses(); @@ -515,9 +512,9 @@ static void PrivateAutoCompleteMembers( CompilerType base_class_type = compiler_type.GetDirectBaseClassAtIndex(i, nullptr); - PrivateAutoCompleteMembers( - frame, partial_member_name, partial_path, prefix_path, - base_class_type.GetCanonicalType(), matches, word_complete); + PrivateAutoCompleteMembers(frame, partial_member_name, partial_path, + prefix_path, + base_class_type.GetCanonicalType(), request); } } @@ -528,9 +525,9 @@ static void PrivateAutoCompleteMembers( CompilerType vbase_class_type = compiler_type.GetVirtualBaseClassAtIndex(i, nullptr); - PrivateAutoCompleteMembers( - frame, partial_member_name, partial_path, prefix_path, - vbase_class_type.GetCanonicalType(), matches, word_complete); + PrivateAutoCompleteMembers(frame, partial_member_name, partial_path, + prefix_path, + vbase_class_type.GetCanonicalType(), request); } } @@ -551,9 +548,9 @@ static void PrivateAutoCompleteMembers( frame, partial_path, prefix_path + member_name, // Anything that has been resolved // already will be in here - member_compiler_type.GetCanonicalType(), matches, word_complete); + member_compiler_type.GetCanonicalType(), request); } else { - matches.AppendString((prefix_path + member_name).str()); + request.AddCompletion((prefix_path + member_name).str()); } } } @@ -564,8 +561,7 @@ static void PrivateAutoComplete( StackFrame *frame, llvm::StringRef partial_path, const llvm::Twine &prefix_path, // Anything that has been resolved already will be in here - const CompilerType &compiler_type, - StringList &matches, bool &word_complete) { + const CompilerType &compiler_type, CompletionRequest &request) { // printf ("\nPrivateAutoComplete()\n\tprefix_path = '%s'\n\tpartial_path = // '%s'\n", prefix_path.c_str(), partial_path.c_str()); std::string remaining_partial_path; @@ -586,15 +582,15 @@ static void PrivateAutoComplete( case eTypeClassReference: case eTypeClassTypedef: case eTypeClassVector: { - matches.AppendString(prefix_path.str()); - word_complete = matches.GetSize() == 1; + request.AddCompletion(prefix_path.str()); + request.SetWordComplete(true); } break; case eTypeClassClass: case eTypeClassStruct: case eTypeClassUnion: if (prefix_path.str().back() != '.') - matches.AppendString((prefix_path + ".").str()); + request.AddCompletion((prefix_path + ".").str()); break; case eTypeClassObjCObject: @@ -604,10 +600,10 @@ static void PrivateAutoComplete( case eTypeClassPointer: { bool omit_empty_base_classes = true; if (compiler_type.GetNumChildren(omit_empty_base_classes, nullptr) > 0) - matches.AppendString((prefix_path + "->").str()); + request.AddCompletion((prefix_path + "->").str()); else { - matches.AppendString(prefix_path.str()); - word_complete = true; + request.AddCompletion(prefix_path.str()); + request.SetWordComplete(true); } } break; } @@ -621,7 +617,7 @@ static void PrivateAutoComplete( const size_t num_variables = variable_list->GetSize(); for (size_t i = 0; i < num_variables; ++i) { Variable *variable = variable_list->GetVariableAtIndex(i).get(); - matches.AppendString(variable->GetName().AsCString()); + request.AddCompletion(variable->GetName().AsCString()); } } } @@ -632,14 +628,14 @@ static void PrivateAutoComplete( case '*': if (prefix_path.str().empty()) { PrivateAutoComplete(frame, partial_path.substr(1), "*", compiler_type, - matches, word_complete); + request); } break; case '&': if (prefix_path.isTriviallyEmpty()) { PrivateAutoComplete(frame, partial_path.substr(1), std::string("&"), - compiler_type, matches, word_complete); + compiler_type, request); } break; @@ -651,14 +647,14 @@ static void PrivateAutoComplete( CompilerType pointee_type(compiler_type.GetPointeeType()); if (partial_path.size() > 2 && partial_path[2]) { // If there is more after the "->", then search deeper - PrivateAutoComplete( - frame, partial_path.substr(2), prefix_path + "->", - pointee_type.GetCanonicalType(), matches, word_complete); + PrivateAutoComplete(frame, partial_path.substr(2), + prefix_path + "->", + pointee_type.GetCanonicalType(), request); } else { // Nothing after the "->", so list all members PrivateAutoCompleteMembers( frame, std::string(), std::string(), prefix_path + "->", - pointee_type.GetCanonicalType(), matches, word_complete); + pointee_type.GetCanonicalType(), request); } } break; default: @@ -676,14 +672,13 @@ static void PrivateAutoComplete( if (partial_path.size() > 1 && partial_path[1]) { // If there is more after the ".", then search deeper PrivateAutoComplete(frame, partial_path.substr(1), - prefix_path + ".", compiler_type, matches, - word_complete); + prefix_path + ".", compiler_type, request); } else { // Nothing after the ".", so list all members PrivateAutoCompleteMembers(frame, std::string(), partial_path, prefix_path + ".", compiler_type, - matches, word_complete); + request); } break; default: @@ -709,8 +704,7 @@ static void PrivateAutoComplete( if (compiler_type.IsValid()) { PrivateAutoCompleteMembers(frame, token, remaining_partial_path, - prefix_path, compiler_type, matches, - word_complete); + prefix_path, compiler_type, request); } else if (frame) { // We haven't found our variable yet const bool get_file_globals = true; @@ -739,13 +733,12 @@ static void PrivateAutoComplete( frame, remaining_partial_path, prefix_path + token, // Anything that has been resolved // already will be in here - variable_compiler_type.GetCanonicalType(), matches, - word_complete); + variable_compiler_type.GetCanonicalType(), request); } else { - matches.AppendString((prefix_path + variable_name).str()); + request.AddCompletion((prefix_path + variable_name).str()); } } else if (remaining_partial_path.empty()) { - matches.AppendString((prefix_path + variable_name).str()); + request.AddCompletion((prefix_path + variable_name).str()); } } } @@ -760,12 +753,8 @@ size_t Variable::AutoComplete(const Exec CompletionRequest &request) { CompilerType compiler_type; - bool word_complete = false; - StringList matches; PrivateAutoComplete(exe_ctx.GetFramePtr(), request.GetCursorArgumentPrefix(), - "", compiler_type, matches, word_complete); - request.SetWordComplete(word_complete); - request.AddCompletions(matches); + "", compiler_type, request); return request.GetNumberOfMatches(); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits