//===-- CommandObjectExpression.h -------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef liblldb_CommandObjectExpression_h_ #define liblldb_CommandObjectExpression_h_ // C Includes // C++ Includes // Other libraries and framework includes // Project includes #include "lldb/Interpreter/CommandObject.h" #include "lldb/Interpreter/OptionGroupFormat.h" #include "lldb/Target/ExecutionContext.h" namespace lldb_private { class CommandObjectExpression : public CommandObject { public: class CommandOptions : public OptionGroup { public: CommandOptions (); virtual ~CommandOptions (); virtual uint32_t GetNumDefinitions (); virtual const OptionDefinition* GetDefinitions (); virtual Error SetOptionValue (CommandInterpreter &interpreter, uint32_t option_idx, const char *option_value); virtual void OptionParsingStarting (CommandInterpreter &interpreter); // Options table: Required for subclasses of Options. static OptionDefinition g_option_table[]; bool print_object; LazyBool use_dynamic; bool unwind_on_error; bool show_types; bool show_summary; }; CommandObjectExpression (CommandInterpreter &interpreter); virtual ~CommandObjectExpression (); virtual Options * GetOptions (); virtual bool Execute (Args& command, CommandReturnObject &result); virtual bool WantsRawCommandString() { return true; } virtual bool ExecuteRawCommandString (const char *command, CommandReturnObject &result); protected: static size_t MultiLineExpressionCallback (void *baton, InputReader &reader, lldb::InputReaderAction notification, const char *bytes, size_t bytes_len); bool EvaluateExpression (const char *expr, Stream *output_stream, Stream *error_stream, CommandReturnObject *result = NULL); OptionGroupOptions m_option_group; OptionGroupFormat m_format_options; CommandOptions m_command_options; ExecutionContext m_exe_ctx; uint32_t m_expr_line_count; std::string m_expr_lines; // Multi-line expression support }; } // namespace lldb_private #endif // liblldb_CommandObjectExpression_h_