//===-- 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/Core/IOHandler.h" #include "lldb/Interpreter/CommandObject.h" #include "lldb/Interpreter/OptionGroupBoolean.h" #include "lldb/Interpreter/OptionGroupFormat.h" #include "lldb/Interpreter/OptionGroupValueObjectDisplay.h" #include "lldb/Target/ExecutionContext.h" namespace lldb_private { class CommandObjectExpression : public CommandObjectRaw, public IOHandlerDelegate { public: class CommandOptions : public OptionGroup { public: CommandOptions (); ~CommandOptions() override; uint32_t GetNumDefinitions() override; const OptionDefinition* GetDefinitions() override; Error SetOptionValue(CommandInterpreter &interpreter, uint32_t option_idx, const char *option_value) override; void OptionParsingStarting(CommandInterpreter &interpreter) override; // Options table: Required for subclasses of Options. static OptionDefinition g_option_table[]; bool unwind_on_error; bool ignore_breakpoints; bool show_types; bool show_summary; bool debug; uint32_t timeout; bool try_all_threads; lldb::LanguageType language; LanguageRuntimeDescriptionDisplayVerbosity m_verbosity; }; CommandObjectExpression (CommandInterpreter &interpreter); ~CommandObjectExpression() override; Options * GetOptions() override; protected: //------------------------------------------------------------------ // IOHandler::Delegate functions //------------------------------------------------------------------ void IOHandlerInputComplete(IOHandler &io_handler, std::string &line) override; virtual LineStatus IOHandlerLinesUpdated (IOHandler &io_handler, StringList &lines, uint32_t line_idx, Error &error); bool DoExecute(const char *command, CommandReturnObject &result) override; bool EvaluateExpression (const char *expr, Stream *output_stream, Stream *error_stream, CommandReturnObject *result = NULL); void GetMultilineExpression (); OptionGroupOptions m_option_group; OptionGroupFormat m_format_options; OptionGroupValueObjectDisplay m_varobj_options; OptionGroupBoolean m_repl_option; CommandOptions m_command_options; uint32_t m_expr_line_count; std::string m_expr_lines; // Multi-line expression support }; } // namespace lldb_private #endif // liblldb_CommandObjectExpression_h_