122514Sdarrenr//===-- CommandCompletions.h ------------------------------------*- C++ -*-===// 222514Sdarrenr// 322514Sdarrenr// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 422514Sdarrenr// See https://llvm.org/LICENSE.txt for license information. 522514Sdarrenr// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 653024Sguido// 722514Sdarrenr//===----------------------------------------------------------------------===// 822514Sdarrenr 922514Sdarrenr#ifndef LLDB_INTERPRETER_COMMANDCOMPLETIONS_H 1022514Sdarrenr#define LLDB_INTERPRETER_COMMANDCOMPLETIONS_H 1153024Sguido 1222514Sdarrenr#include <set> 1322514Sdarrenr 1422514Sdarrenr#include "lldb/Core/SearchFilter.h" 1522514Sdarrenr#include "lldb/Interpreter/Options.h" 1653024Sguido#include "lldb/Utility/CompletionRequest.h" 1722514Sdarrenr#include "lldb/Utility/FileSpecList.h" 1822514Sdarrenr#include "lldb/Utility/RegularExpression.h" 1922514Sdarrenr#include "lldb/lldb-private.h" 2053024Sguido 2122514Sdarrenr#include "llvm/ADT/Twine.h" 2222514Sdarrenr 2322514Sdarrenrnamespace lldb_private { 2422514Sdarrenrclass TildeExpressionResolver; 2553024Sguidoclass CommandCompletions { 26public: 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