CommandObjectMultiword.h revision 6d101887bb427b3c879c0c06775ab4dcb1cd265b
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandObjectMultiword.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_CommandObjectMultiword_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_CommandObjectMultiword_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <map> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/CommandObject.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectMultiword 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectMultiword : public CommandObject 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 29da26bd203cbb104291b39891febf7481794f205fJim Ingham// These two want to iterate over the subcommand dictionary. 30da26bd203cbb104291b39891febf7481794f205fJim Inghamfriend class CommandInterpreter; 31da26bd203cbb104291b39891febf7481794f205fJim Inghamfriend class CommandObjectSyntax; 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 33238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectMultiword (CommandInterpreter &interpreter, 34238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton const char *name, 3563094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *help = NULL, 3663094e0bb161580564954dee512955c1c79d3476Greg Clayton const char *syntax = NULL, 3763094e0bb161580564954dee512955c1c79d3476Greg Clayton uint32_t flags = 0); 3863094e0bb161580564954dee512955c1c79d3476Greg Clayton 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectMultiword (); 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsMultiwordObject () { return true; } 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 456d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata virtual bool 46238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand (const char *cmd_name, 4763094e0bb161580564954dee512955c1c79d3476Greg Clayton const lldb::CommandObjectSP& command_obj); 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 50238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton GenerateHelpText (CommandReturnObject &result); 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::CommandObjectSP 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetSubcommandSP (const char *sub_cmd, StringList *matches = NULL); 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandObject * 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetSubcommandObject (const char *sub_cmd, StringList *matches = NULL); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 59da26bd203cbb104291b39891febf7481794f205fJim Ingham WantsRawCommandString() { return false; }; 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual int 62238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton HandleCompletion (Args &input, 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int &cursor_index, 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int &cursor_char_position, 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int match_start_point, 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int max_return_elements, 67802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham bool &word_complete, 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StringList &matches); 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 70767af88aa617288e584afcfed055f7755e408542Jim Ingham virtual const char *GetRepeatCommand (Args ¤t_command_args, uint32_t index); 71767af88aa617288e584afcfed055f7755e408542Jim Ingham 72da26bd203cbb104291b39891febf7481794f205fJim Ingham virtual bool 73da26bd203cbb104291b39891febf7481794f205fJim Ingham Execute (const char *args_string, 74da26bd203cbb104291b39891febf7481794f205fJim Ingham CommandReturnObject &result); 756d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata 766d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata virtual bool 776d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata IsRemovable() { return m_can_be_removed; } 786d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata 796d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata void 806d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata SetRemovable (bool removable) 816d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata { 826d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata m_can_be_removed = removable; 836d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata } 846d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata 85da26bd203cbb104291b39891febf7481794f205fJim Inghamprotected: 86da26bd203cbb104291b39891febf7481794f205fJim Ingham 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandObject::CommandMap m_subcommand_dict; 886d101887bb427b3c879c0c06775ab4dcb1cd265bEnrico Granata bool m_can_be_removed; 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_CommandObjectMultiword_h_ 94