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/Core/Options.h" 19 #include "lldb/Core/Language.h" 20 #include "lldb/Target/ExecutionContext.h" 21 22 namespace lldb_private { 23 24 class CommandObjectExpression : public CommandObject 25 { 26 public: 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 (Args& command, 69 CommandContext *context, 70 CommandInterpreter *interpreter, 71 CommandReturnObject &result); 72 73 virtual bool 74 WantsRawCommandString() { return true; } 75 76 virtual bool 77 ExecuteRawCommandString (const char *command, 78 CommandContext *context, 79 CommandInterpreter *interpreter, 80 CommandReturnObject &result); 81 82 protected: 83 84 static size_t 85 MultiLineExpressionCallback (void *baton, 86 InputReader *reader, 87 lldb::InputReaderAction notification, 88 const char *bytes, 89 size_t bytes_len); 90 91 bool 92 EvaluateExpression (const char *expr, 93 bool bare, 94 Stream &output_stream, 95 Stream &error_stream); 96 97 CommandOptions m_options; 98 ExecutionContext m_exe_ctx; 99 uint32_t m_expr_line_count; 100 std::string m_expr_lines; // Multi-line expression support 101 }; 102 103 } // namespace lldb_private 104 105 #endif // liblldb_CommandObjectExpression_h_ 106