CommandObjectRegexCommand.h revision f3c65b85caf3e097654f6b59c9a709507adfc254
1//===-- CommandObjectRegexCommand.h -----------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef liblldb_CommandObjectRegexCommand_h_ 11#define liblldb_CommandObjectRegexCommand_h_ 12 13// C Includes 14// C++ Includes 15#include <list> 16 17// Other libraries and framework includes 18// Project includes 19#include "lldb/Core/RegularExpression.h" 20#include "lldb/Interpreter/CommandObject.h" 21 22namespace lldb_private { 23 24//------------------------------------------------------------------------- 25// CommandObjectRegexCommand 26//------------------------------------------------------------------------- 27 28class CommandObjectRegexCommand : public CommandObjectRaw 29{ 30public: 31 32 CommandObjectRegexCommand (CommandInterpreter &interpreter, 33 const char *name, 34 const char *help, 35 const char *syntax, 36 uint32_t max_matches, 37 uint32_t completion_type_mask = 0); 38 39 virtual 40 ~CommandObjectRegexCommand (); 41 42 bool 43 AddRegexCommand (const char *re_cstr, const char *command_cstr); 44 45 bool 46 HasRegexEntries () const 47 { 48 return !m_entries.empty(); 49 } 50 51 virtual int 52 HandleCompletion (Args &input, 53 int &cursor_index, 54 int &cursor_char_position, 55 int match_start_point, 56 int max_return_elements, 57 bool &word_complete, 58 StringList &matches); 59 60protected: 61 virtual bool 62 DoExecute (const char *command, CommandReturnObject &result); 63 64 struct Entry 65 { 66 RegularExpression regex; 67 std::string command; 68 }; 69 70 typedef std::list<Entry> EntryCollection; 71 const uint32_t m_max_matches; 72 const uint32_t m_completion_type_mask; 73 EntryCollection m_entries; 74 75private: 76 DISALLOW_COPY_AND_ASSIGN (CommandObjectRegexCommand); 77}; 78 79} // namespace lldb_private 80 81#endif // liblldb_CommandObjectRegexCommand_h_ 82