1//===-- CommandObjectExpression.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_CommandObjectExpression_h_
11#define liblldb_CommandObjectExpression_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Core/IOHandler.h"
18#include "lldb/Interpreter/CommandObject.h"
19#include "lldb/Interpreter/OptionGroupFormat.h"
20#include "lldb/Interpreter/OptionGroupValueObjectDisplay.h"
21#include "lldb/Target/ExecutionContext.h"
22
23namespace lldb_private {
24
25class CommandObjectExpression :
26    public CommandObjectRaw,
27    public IOHandlerDelegate
28{
29public:
30
31    class CommandOptions : public OptionGroup
32    {
33    public:
34
35        CommandOptions ();
36
37        virtual
38        ~CommandOptions ();
39
40        virtual uint32_t
41        GetNumDefinitions ();
42
43        virtual const OptionDefinition*
44        GetDefinitions ();
45
46        virtual Error
47        SetOptionValue (CommandInterpreter &interpreter,
48                        uint32_t option_idx,
49                        const char *option_value);
50
51        virtual void
52        OptionParsingStarting (CommandInterpreter &interpreter);
53
54        // Options table: Required for subclasses of Options.
55
56        static OptionDefinition g_option_table[];
57        bool        unwind_on_error;
58        bool        ignore_breakpoints;
59        bool        show_types;
60        bool        show_summary;
61        bool        debug;
62        uint32_t    timeout;
63        bool        try_all_threads;
64        LanguageRuntimeDescriptionDisplayVerbosity m_verbosity;
65    };
66
67    CommandObjectExpression (CommandInterpreter &interpreter);
68
69    virtual
70    ~CommandObjectExpression ();
71
72    virtual
73    Options *
74    GetOptions ();
75
76protected:
77
78    //------------------------------------------------------------------
79    // IOHandler::Delegate functions
80    //------------------------------------------------------------------
81    virtual void
82    IOHandlerInputComplete (IOHandler &io_handler,
83                            std::string &line);
84
85    virtual LineStatus
86    IOHandlerLinesUpdated (IOHandler &io_handler,
87                           StringList &lines,
88                           uint32_t line_idx,
89                           Error &error);
90    virtual bool
91    DoExecute (const char *command,
92               CommandReturnObject &result);
93
94    bool
95    EvaluateExpression (const char *expr,
96                        Stream *output_stream,
97                        Stream *error_stream,
98                        CommandReturnObject *result = NULL);
99
100    OptionGroupOptions m_option_group;
101    OptionGroupFormat m_format_options;
102    OptionGroupValueObjectDisplay m_varobj_options;
103    CommandOptions m_command_options;
104    uint32_t m_expr_line_count;
105    std::string m_expr_lines; // Multi-line expression support
106};
107
108} // namespace lldb_private
109
110#endif  // liblldb_CommandObjectExpression_h_
111