CommandObjectExpression.h revision 63094e0bb161580564954dee512955c1c79d3476
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/Interpreter/CommandObject.h"
18#include "lldb/Interpreter/Options.h"
19#include "lldb/Core/Language.h"
20#include "lldb/Target/ExecutionContext.h"
21
22namespace lldb_private {
23
24class CommandObjectExpression : public CommandObject
25{
26public:
27
28    class CommandOptions : public Options
29    {
30    public:
31
32        CommandOptions ();
33
34        virtual
35        ~CommandOptions ();
36
37        virtual Error
38        SetOptionValue (int option_idx, const char *option_arg);
39
40        void
41        ResetOptionValues ();
42
43        const lldb::OptionDefinition*
44        GetDefinitions ();
45
46        // Options table: Required for subclasses of Options.
47
48        static lldb::OptionDefinition g_option_table[];
49        Language  language;
50        lldb::Encoding  encoding;
51        lldb::Format    format;
52        bool        debug;
53        bool        show_types;
54        bool        show_summary;
55    };
56
57    CommandObjectExpression ();
58
59    virtual
60    ~CommandObjectExpression ();
61
62    virtual
63    Options *
64    GetOptions ();
65
66
67    virtual bool
68    Execute (CommandInterpreter &interpreter,
69             Args& command,
70             CommandReturnObject &result);
71
72    virtual bool
73    WantsRawCommandString() { return true; }
74
75    virtual bool
76    ExecuteRawCommandString (CommandInterpreter &interpreter,
77                             const char *command,
78                             CommandReturnObject &result);
79
80protected:
81
82    static size_t
83    MultiLineExpressionCallback (void *baton,
84                                 InputReader &reader,
85                                 lldb::InputReaderAction notification,
86                                 const char *bytes,
87                                 size_t bytes_len);
88
89    bool
90    EvaluateExpression (const char *expr,
91                        bool bare,
92                        Stream &output_stream,
93                        Stream &error_stream);
94
95    CommandOptions m_options;
96    ExecutionContext m_exe_ctx;
97    uint32_t m_expr_line_count;
98    std::string m_expr_lines; // Multi-line expression support
99};
100
101} // namespace lldb_private
102
103#endif  // liblldb_CommandObjectExpression_h_
104