1 //===-- CommandCompletions.h ------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_INTERPRETER_COMMANDCOMPLETIONS_H 10 #define LLDB_INTERPRETER_COMMANDCOMPLETIONS_H 11 12 #include <set> 13 14 #include "lldb/Core/SearchFilter.h" 15 #include "lldb/Interpreter/Options.h" 16 #include "lldb/Utility/CompletionRequest.h" 17 #include "lldb/Utility/FileSpecList.h" 18 #include "lldb/Utility/RegularExpression.h" 19 #include "lldb/lldb-private.h" 20 21 #include "llvm/ADT/Twine.h" 22 23 namespace lldb_private { 24 class TildeExpressionResolver; 25 class CommandCompletions { 26 public: 27 static bool InvokeCommonCompletionCallbacks( 28 CommandInterpreter &interpreter, uint32_t completion_mask, 29 lldb_private::CompletionRequest &request, SearchFilter *searcher); 30 31 // These are the generic completer functions: 32 static void DiskFiles(CommandInterpreter &interpreter, 33 CompletionRequest &request, SearchFilter *searcher); 34 35 static void DiskFiles(const llvm::Twine &partial_file_name, 36 StringList &matches, TildeExpressionResolver &Resolver); 37 38 static void DiskDirectories(CommandInterpreter &interpreter, 39 CompletionRequest &request, 40 SearchFilter *searcher); 41 42 static void DiskDirectories(const llvm::Twine &partial_file_name, 43 StringList &matches, 44 TildeExpressionResolver &Resolver); 45 46 static void RemoteDiskFiles(CommandInterpreter &interpreter, 47 CompletionRequest &request, 48 SearchFilter *searcher); 49 50 static void RemoteDiskDirectories(CommandInterpreter &interpreter, 51 CompletionRequest &request, 52 SearchFilter *searcher); 53 54 static void SourceFiles(CommandInterpreter &interpreter, 55 CompletionRequest &request, SearchFilter *searcher); 56 57 static void Modules(CommandInterpreter &interpreter, 58 CompletionRequest &request, SearchFilter *searcher); 59 60 static void ModuleUUIDs(CommandInterpreter &interpreter, 61 CompletionRequest &request, SearchFilter *searcher); 62 63 static void Symbols(CommandInterpreter &interpreter, 64 CompletionRequest &request, SearchFilter *searcher); 65 66 static void SettingsNames(CommandInterpreter &interpreter, 67 CompletionRequest &request, SearchFilter *searcher); 68 69 static void PlatformPluginNames(CommandInterpreter &interpreter, 70 CompletionRequest &request, 71 SearchFilter *searcher); 72 73 static void ArchitectureNames(CommandInterpreter &interpreter, 74 CompletionRequest &request, 75 SearchFilter *searcher); 76 77 static void VariablePath(CommandInterpreter &interpreter, 78 CompletionRequest &request, SearchFilter *searcher); 79 80 static void Registers(CommandInterpreter &interpreter, 81 CompletionRequest &request, SearchFilter *searcher); 82 83 static void Breakpoints(CommandInterpreter &interpreter, 84 CompletionRequest &request, SearchFilter *searcher); 85 86 static void BreakpointNames(CommandInterpreter &interpreter, 87 CompletionRequest &request, 88 SearchFilter *searcher); 89 90 static void ProcessPluginNames(CommandInterpreter &interpreter, 91 CompletionRequest &request, 92 SearchFilter *searcher); 93 94 static void ProcessIDs(CommandInterpreter &interpreter, 95 CompletionRequest &request, SearchFilter *searcher); 96 97 static void ProcessNames(CommandInterpreter &interpreter, 98 CompletionRequest &request, SearchFilter *searcher); 99 100 static void DisassemblyFlavors(CommandInterpreter &interpreter, 101 CompletionRequest &request, 102 SearchFilter *searcher); 103 104 static void TypeLanguages(CommandInterpreter &interpreter, 105 CompletionRequest &request, SearchFilter *searcher); 106 107 static void FrameIndexes(CommandInterpreter &interpreter, 108 CompletionRequest &request, SearchFilter *searcher); 109 110 static void StopHookIDs(CommandInterpreter &interpreter, 111 CompletionRequest &request, SearchFilter *searcher); 112 113 static void ThreadIndexes(CommandInterpreter &interpreter, 114 CompletionRequest &request, SearchFilter *searcher); 115 116 static void WatchPointIDs(CommandInterpreter &interpreter, 117 CompletionRequest &request, SearchFilter *searcher); 118 119 static void TypeCategoryNames(CommandInterpreter &interpreter, 120 CompletionRequest &request, 121 SearchFilter *searcher); 122 123 static void ThreadIDs(CommandInterpreter &interpreter, 124 CompletionRequest &request, SearchFilter *searcher); 125 126 /// This completer works for commands whose only arguments are a command path. 127 /// It isn't tied to an argument type because it completes not on a single 128 /// argument but on the sequence of arguments, so you have to invoke it by 129 /// hand. 130 static void 131 CompleteModifiableCmdPathArgs(CommandInterpreter &interpreter, 132 CompletionRequest &request, 133 OptionElementVector &opt_element_vector); 134 }; 135 136 } // namespace lldb_private 137 138 #endif // LLDB_INTERPRETER_COMMANDCOMPLETIONS_H 139