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 &current_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