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