124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandCompletions.h ------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef lldb_CommandCompletions_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define lldb_CommandCompletions_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1549ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include <set> 1649ce8969d3154e1560106cfe530444c09410f217Greg Clayton 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/SearchFilter.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/FileSpecList.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/RegularExpression.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandCompletions 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // This is the command completion callback that is used to complete the argument of the option 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // it is bound to (in the OptionDefinition table below). Return the total number of matches. 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 3463094e0bb161580564954dee512955c1c79d3476Greg Clayton typedef int (*CompletionCallback) (CommandInterpreter &interpreter, 3563094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, // This is the argument we are completing 3663094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, // This is the point in the list of matches that you should start returning elements 3763094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, // This is the number of matches requested. 3863094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::SearchFilter *searcher,// A search filter to limit the search... 39802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 4063094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::StringList &matches); // The array of matches we return. 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef enum 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 435e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eNoCompletion = 0u, 445e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eSourceFileCompletion = (1u << 0), 455e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eDiskFileCompletion = (1u << 1), 465e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eDiskDirectoryCompletion = (1u << 2), 475e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eSymbolCompletion = (1u << 3), 485e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eModuleCompletion = (1u << 4), 495e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eSettingsNameCompletion = (1u << 5), 505e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton ePlatformPluginCompletion = (1u << 6), 515e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton eArchitectureCompletion = (1u << 7), 52946618a80e17d210e6592e94d10a15ad592572baGreg Clayton eVariablePathCompletion = (1u << 8), 535e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton // This item serves two purposes. It is the last element in the enum, 545e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton // so you can add custom enums starting from here in your Option class. 555e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton // Also if you & in this bit the base code will not process the option. 56946618a80e17d210e6592e94d10a15ad592572baGreg Clayton eCustomCompletion = (1u << 9) 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } CommonCompletionTypes; 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner struct CommonCompletionElement 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 6254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton uint32_t type; 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CompletionCallback callback; 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6663094e0bb161580564954dee512955c1c79d3476Greg Clayton static bool InvokeCommonCompletionCallbacks (CommandInterpreter &interpreter, 6763094e0bb161580564954dee512955c1c79d3476Greg Clayton uint32_t completion_mask, 6863094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, 6963094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 7063094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 7163094e0bb161580564954dee512955c1c79d3476Greg Clayton SearchFilter *searcher, 72802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 7363094e0bb161580564954dee512955c1c79d3476Greg Clayton StringList &matches); 7463094e0bb161580564954dee512955c1c79d3476Greg Clayton 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // These are the generic completer functions: 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static int 79802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham DiskFiles (CommandInterpreter &interpreter, 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *partial_file_name, 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int match_start_point, 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int max_return_elements, 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SearchFilter *searcher, 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool &word_complete, 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton StringList &matches); 86802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham static int 87802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham DiskDirectories (CommandInterpreter &interpreter, 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const char *partial_file_name, 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int match_start_point, 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton int max_return_elements, 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SearchFilter *searcher, 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool &word_complete, 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton StringList &matches); 94802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham 95802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham static int 9663094e0bb161580564954dee512955c1c79d3476Greg Clayton SourceFiles (CommandInterpreter &interpreter, 9763094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *partial_file_name, 9863094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 9963094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 10063094e0bb161580564954dee512955c1c79d3476Greg Clayton SearchFilter *searcher, 101802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 10263094e0bb161580564954dee512955c1c79d3476Greg Clayton StringList &matches); 10363094e0bb161580564954dee512955c1c79d3476Greg Clayton 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static int 10563094e0bb161580564954dee512955c1c79d3476Greg Clayton Modules (CommandInterpreter &interpreter, 10663094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *partial_file_name, 10763094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 10863094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 10963094e0bb161580564954dee512955c1c79d3476Greg Clayton SearchFilter *searcher, 110802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 11163094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::StringList &matches); 11263094e0bb161580564954dee512955c1c79d3476Greg Clayton 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static int 11463094e0bb161580564954dee512955c1c79d3476Greg Clayton Symbols (CommandInterpreter &interpreter, 11563094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *partial_file_name, 11663094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 11763094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 11863094e0bb161580564954dee512955c1c79d3476Greg Clayton SearchFilter *searcher, 119802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 12063094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::StringList &matches); 12163094e0bb161580564954dee512955c1c79d3476Greg Clayton 1226e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice static int 1236e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice SettingsNames (CommandInterpreter &interpreter, 1246e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice const char *partial_file_name, 1256e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice int match_start_point, 1266e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice int max_return_elements, 1276e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice SearchFilter *searcher, 1286e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice bool &word_complete, 1296e4c5ce0f697eb9899a54854a2a9004e961b0de2Caroline Tice lldb_private::StringList &matches); 1305e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton 1315e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton static int 1325e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton PlatformPluginNames (CommandInterpreter &interpreter, 1335e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton const char *partial_file_name, 1345e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton int match_start_point, 1355e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton int max_return_elements, 1365e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton SearchFilter *searcher, 1375e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton bool &word_complete, 1385e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton lldb_private::StringList &matches); 1395e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton 1405e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton 1415e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton static int 1425e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton ArchitectureNames (CommandInterpreter &interpreter, 1435e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton const char *partial_file_name, 1445e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton int match_start_point, 1455e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton int max_return_elements, 1465e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton SearchFilter *searcher, 1475e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton bool &word_complete, 1485e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton lldb_private::StringList &matches); 149946618a80e17d210e6592e94d10a15ad592572baGreg Clayton 150946618a80e17d210e6592e94d10a15ad592572baGreg Clayton static int 151946618a80e17d210e6592e94d10a15ad592572baGreg Clayton VariablePath (CommandInterpreter &interpreter, 152946618a80e17d210e6592e94d10a15ad592572baGreg Clayton const char *partial_file_name, 153946618a80e17d210e6592e94d10a15ad592572baGreg Clayton int match_start_point, 154946618a80e17d210e6592e94d10a15ad592572baGreg Clayton int max_return_elements, 155946618a80e17d210e6592e94d10a15ad592572baGreg Clayton SearchFilter *searcher, 156946618a80e17d210e6592e94d10a15ad592572baGreg Clayton bool &word_complete, 157946618a80e17d210e6592e94d10a15ad592572baGreg Clayton lldb_private::StringList &matches); 158946618a80e17d210e6592e94d10a15ad592572baGreg Clayton 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // The Completer class is a convenient base class for building searchers 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // that go along with the SearchFilter passed to the standard Completer 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // functions. 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class Completer : public Searcher 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 16763094e0bb161580564954dee512955c1c79d3476Greg Clayton Completer (CommandInterpreter &interpreter, 16863094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int match_start_point, 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int max_return_elements, 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StringList &matches); 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual ~Completer (); 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual CallbackReturn 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SearchCallback (SearchFilter &filter, 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolContext &context, 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address *addr, 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool complete) = 0; 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Depth 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetDepth () = 0; 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DoCompletion (SearchFilter *filter) = 0; 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner protected: 18863094e0bb161580564954dee512955c1c79d3476Greg Clayton CommandInterpreter &m_interpreter; 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::string m_completion_str; 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_match_start_point; 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int m_max_return_elements; 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StringList &m_matches; 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (Completer); 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // SouceFileCompleter implements the source file completer 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class SourceFileCompleter : public Completer 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20463094e0bb161580564954dee512955c1c79d3476Greg Clayton SourceFileCompleter (CommandInterpreter &interpreter, 20563094e0bb161580564954dee512955c1c79d3476Greg Clayton bool include_support_files, 20663094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, 20763094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 20863094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 20963094e0bb161580564954dee512955c1c79d3476Greg Clayton StringList &matches); 21063094e0bb161580564954dee512955c1c79d3476Greg Clayton 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::Depth GetDepth (); 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::CallbackReturn 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SearchCallback (SearchFilter &filter, 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolContext &context, 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address *addr, 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool complete); 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DoCompletion (SearchFilter *filter); 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool m_include_support_files; 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FileSpecList m_matching_files; 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *m_file_name; 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *m_dir_name; 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (SourceFileCompleter); 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // ModuleCompleter implements the module completer 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class ModuleCompleter : public Completer 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23863094e0bb161580564954dee512955c1c79d3476Greg Clayton ModuleCompleter (CommandInterpreter &interpreter, 23963094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, 24063094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 24163094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 24263094e0bb161580564954dee512955c1c79d3476Greg Clayton StringList &matches); 24363094e0bb161580564954dee512955c1c79d3476Greg Clayton 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::Depth GetDepth (); 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::CallbackReturn 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SearchCallback (SearchFilter &filter, 24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolContext &context, 24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address *addr, 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool complete); 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DoCompletion (SearchFilter *filter); 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *m_file_name; 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *m_dir_name; 25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (ModuleCompleter); 25924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 26324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // SymbolCompleter implements the symbol completer 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class SymbolCompleter : public Completer 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26963094e0bb161580564954dee512955c1c79d3476Greg Clayton SymbolCompleter (CommandInterpreter &interpreter, 27063094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *completion_str, 27163094e0bb161580564954dee512955c1c79d3476Greg Clayton int match_start_point, 27263094e0bb161580564954dee512955c1c79d3476Greg Clayton int max_return_elements, 27363094e0bb161580564954dee512955c1c79d3476Greg Clayton StringList &matches); 27463094e0bb161580564954dee512955c1c79d3476Greg Clayton 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::Depth GetDepth (); 27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Searcher::CallbackReturn 27824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SearchCallback (SearchFilter &filter, 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolContext &context, 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address *addr, 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool complete); 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DoCompletion (SearchFilter *filter); 28524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 28763094e0bb161580564954dee512955c1c79d3476Greg Clayton// struct NameCmp { 28863094e0bb161580564954dee512955c1c79d3476Greg Clayton// bool operator() (const ConstString& lhs, const ConstString& rhs) const 28963094e0bb161580564954dee512955c1c79d3476Greg Clayton// { 29063094e0bb161580564954dee512955c1c79d3476Greg Clayton// return lhs < rhs; 29163094e0bb161580564954dee512955c1c79d3476Greg Clayton// } 29263094e0bb161580564954dee512955c1c79d3476Greg Clayton// }; 29324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RegularExpression m_regex; 29563094e0bb161580564954dee512955c1c79d3476Greg Clayton typedef std::set<ConstString> collection; 29624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner collection m_match_set; 29724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (SymbolCompleter); 29824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 30024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 30224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static CommonCompletionElement g_common_completions[]; 30324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 30524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30687c871847dba627a07cf6f4ac8cfb4d6722eccb5Eli Friedman} // namespace lldb_private 30724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // lldb_CommandCompletions_h_ 308