124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandObjectRegexCommand.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 liblldb_CommandObjectRegexCommand_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_CommandObjectRegexCommand_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <list> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/RegularExpression.h" 20d12aeab33bab559e138307f599077da3918a3238Greg Clayton#include "lldb/Interpreter/CommandObject.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectRegexCommand 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28da26bd203cbb104291b39891febf7481794f205fJim Inghamclass CommandObjectRegexCommand : public CommandObjectRaw 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectRegexCommand (CommandInterpreter &interpreter, 33238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton const char *name, 34238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton const char *help, 35238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton const char *syntax, 36f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton uint32_t max_matches, 37f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton uint32_t completion_type_mask = 0); 38238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectRegexCommand (); 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddRegexCommand (const char *re_cstr, const char *command_cstr); 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45d12aeab33bab559e138307f599077da3918a3238Greg Clayton bool 46d12aeab33bab559e138307f599077da3918a3238Greg Clayton HasRegexEntries () const 47d12aeab33bab559e138307f599077da3918a3238Greg Clayton { 48d12aeab33bab559e138307f599077da3918a3238Greg Clayton return !m_entries.empty(); 49d12aeab33bab559e138307f599077da3918a3238Greg Clayton } 50f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton 51f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton virtual int 52f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton HandleCompletion (Args &input, 53f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton int &cursor_index, 54f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton int &cursor_char_position, 55f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton int match_start_point, 56f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton int max_return_elements, 57f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton bool &word_complete, 58f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton StringList &matches); 59d12aeab33bab559e138307f599077da3918a3238Greg Clayton 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 61da26bd203cbb104291b39891febf7481794f205fJim Ingham virtual bool 62da26bd203cbb104291b39891febf7481794f205fJim Ingham DoExecute (const char *command, CommandReturnObject &result); 63da26bd203cbb104291b39891febf7481794f205fJim Ingham 64f8e98a6e4560c632a9c0373abee247e747097845Greg Clayton struct Entry 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RegularExpression regex; 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::string command; 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::list<Entry> EntryCollection; 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const uint32_t m_max_matches; 72f3c65b85caf3e097654f6b59c9a709507adfc254Greg Clayton const uint32_t m_completion_type_mask; 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner EntryCollection m_entries; 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (CommandObjectRegexCommand); 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_CommandObjectRegexCommand_h_ 82