124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandInterpreter.h ------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_CommandInterpreter_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_CommandInterpreter_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Broadcaster.h" 1963094e0bb161580564954dee512955c1c79d3476Greg Clayton#include "lldb/Core/Debugger.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Log.h" 21b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata#include "lldb/Interpreter/CommandHistory.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/CommandObject.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/ScriptInterpreter.h" 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Event.h" 2584cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Args.h" 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/StringList.h" 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 309f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Claytonclass CommandInterpreter : 319f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton public Broadcaster, 329f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton public Properties 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::map<std::string, OptionArgVectorSP> OptionArgMap; 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner enum 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner eBroadcastBitThreadShouldExit = (1 << 0), 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner eBroadcastBitResetPrompt = (1 << 1), 414a348081030cdd2af758fddc869518357d9befd3Caroline Tice eBroadcastBitQuitCommandReceived = (1 << 2), // User entered quit 424a348081030cdd2af758fddc869518357d9befd3Caroline Tice eBroadcastBitAsynchronousOutputData = (1 << 3), 434a348081030cdd2af758fddc869518357d9befd3Caroline Tice eBroadcastBitAsynchronousErrorData = (1 << 4) 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 45db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata 46db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata enum ChildrenTruncatedWarningStatus // tristate boolean to manage children truncation warning 47db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata { 48db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata eNoTruncation = 0, // never truncated 49db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata eUnwarnedTruncation = 1, // truncated but did not notify 50db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata eWarnedTruncation = 2 // truncated and notified 51db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata }; 526b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata 536b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata enum CommandTypes 546b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata { 556b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata eCommandTypesBuiltin = 0x0001, // native commands such as "frame" 566b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata eCommandTypesUserDef = 0x0002, // scripted commands 576b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata eCommandTypesAliases = 0x0004, // aliases such as "po" 586b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata eCommandTypesAllThem = 0xFFFF // all commands 596b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata }; 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 615a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham // These two functions fill out the Broadcaster interface: 625a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 635a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham static ConstString &GetStaticBroadcasterClass (); 645a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 655a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham virtual ConstString &GetBroadcasterClass() const 665a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham { 675a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham return GetStaticBroadcasterClass(); 685a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham } 695a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 71b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton SourceInitFile (bool in_cwd, 72b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandReturnObject &result); 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7463094e0bb161580564954dee512955c1c79d3476Greg Clayton CommandInterpreter (Debugger &debugger, 7563094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb::ScriptLanguage script_language, 7663094e0bb161580564954dee512955c1c79d3476Greg Clayton bool synchronous_execution); 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandInterpreter (); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 81d12aeab33bab559e138307f599077da3918a3238Greg Clayton bool 82d12aeab33bab559e138307f599077da3918a3238Greg Clayton AddCommand (const char *name, 83d12aeab33bab559e138307f599077da3918a3238Greg Clayton const lldb::CommandObjectSP &cmd_sp, 84d12aeab33bab559e138307f599077da3918a3238Greg Clayton bool can_replace); 85d12aeab33bab559e138307f599077da3918a3238Greg Clayton 866b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata bool 876010acef0cee54e044d4e7e472ef3d99e13c5045Enrico Granata AddUserCommand (std::string name, 886b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata const lldb::CommandObjectSP &cmd_sp, 896b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata bool can_replace); 906b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::CommandObjectSP 92b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetCommandSPExact (const char *cmd, 93b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool include_aliases); 94d40f8a68b49a43264ff41a0f0ef51bef6372e8b3Jim Ingham 95d40f8a68b49a43264ff41a0f0ef51bef6372e8b3Jim Ingham CommandObject * 96b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetCommandObjectExact (const char *cmd_cstr, 97b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool include_aliases); 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandObject * 100b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetCommandObject (const char *cmd, 101b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StringList *matches = NULL); 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandExists (const char *cmd); 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AliasExists (const char *cmd); 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner UserCommandExists (const char *cmd); 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 113b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton AddAlias (const char *alias_name, 114b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton lldb::CommandObjectSP& command_obj_sp); 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RemoveAlias (const char *alias_name); 1181d4812cbb71af9e05250a4ffbcda4236275c82b4Jim Ingham 1191d4812cbb71af9e05250a4ffbcda4236275c82b4Jim Ingham bool 1201d4812cbb71af9e05250a4ffbcda4236275c82b4Jim Ingham GetAliasFullName (const char *cmd, std::string &full_name); 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RemoveUser (const char *alias_name); 1246b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata 1256b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata void 1266b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata RemoveAllUser () 1276b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata { 1286b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata m_user_dict.clear(); 1296b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata } 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner OptionArgVectorSP 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetAliasOptions (const char *alias_name); 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1345ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice 1355ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice bool 1365ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice ProcessAliasOptionsArgs (lldb::CommandObjectSP &cmd_obj_sp, 1375ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice const char *options_args, 1385ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice OptionArgVectorSP &option_arg_vector_sp); 1395ddbe214153f60f8ab62ba98dea089a21f1779f3Caroline Tice 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RemoveAliasOptions (const char *alias_name); 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 144b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton AddOrReplaceAliasOptions (const char *alias_name, 145b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton OptionArgVectorSP &option_arg_vector_sp); 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1477268b4c8a444a59d42f4d765bd7292e62f41a651Greg Clayton CommandObject * 148b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton BuildAliasResult (const char *alias_name, 149b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton std::string &raw_input_string, 150b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton std::string &alias_result, 151b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandReturnObject &result); 152e0da7a5ba288669df3a4d51059aa0f78f729c6b1Caroline Tice 153e0da7a5ba288669df3a4d51059aa0f78f729c6b1Caroline Tice bool 15463094e0bb161580564954dee512955c1c79d3476Greg Clayton HandleCommand (const char *command_line, 15501bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata LazyBool add_to_history, 15663094e0bb161580564954dee512955c1c79d3476Greg Clayton CommandReturnObject &result, 157949d5acde6684b5824a26034457410cdf3823dfeJim Ingham ExecutionContext *override_context = NULL, 1588bdf57cfc246358ab65b2d36ec2b8462e8d36e54Johnny Chen bool repeat_on_empty_command = true, 1598bdf57cfc246358ab65b2d36ec2b8462e8d36e54Johnny Chen bool no_context_switching = false); 160949d5acde6684b5824a26034457410cdf3823dfeJim Ingham 161949d5acde6684b5824a26034457410cdf3823dfeJim Ingham //------------------------------------------------------------------ 162949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// Execute a list of commands in sequence. 163949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// 164949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] commands 165949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// The list of commands to execute. 166949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in/out] context 167949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// The execution context in which to run the commands. Can be NULL in which case the default 168949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// context will be used. 169949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] stop_on_continue 170949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true execution will end on the first command that causes the process in the 171949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// execution context to continue. If \false, we won't check the execution status. 172949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] stop_on_error 173949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true execution will end on the first command that causes an error. 174949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] echo_commands 175949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true echo the command before executing it. If \false, execute silently. 176949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] print_results 177949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true print the results of the command after executing it. If \false, execute silently. 178949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[out] result 179949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// This is marked as succeeding with no output if all commands execute safely, 180949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// and failed with some explanation if we aborted executing the commands at some point. 181949d5acde6684b5824a26034457410cdf3823dfeJim Ingham //------------------------------------------------------------------ 182949d5acde6684b5824a26034457410cdf3823dfeJim Ingham void 183a4fede31869663e889d67ace3d07dc5d3e4ea2b8Jim Ingham HandleCommands (const StringList &commands, 184949d5acde6684b5824a26034457410cdf3823dfeJim Ingham ExecutionContext *context, 185949d5acde6684b5824a26034457410cdf3823dfeJim Ingham bool stop_on_continue, 186949d5acde6684b5824a26034457410cdf3823dfeJim Ingham bool stop_on_error, 187949d5acde6684b5824a26034457410cdf3823dfeJim Ingham bool echo_commands, 18801bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata bool print_results, 18901bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata LazyBool add_to_history, 190949d5acde6684b5824a26034457410cdf3823dfeJim Ingham CommandReturnObject &result); 191949d5acde6684b5824a26034457410cdf3823dfeJim Ingham 192949d5acde6684b5824a26034457410cdf3823dfeJim Ingham //------------------------------------------------------------------ 193949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// Execute a list of commands from a file. 194949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// 195949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] file 196949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// The file from which to read in commands. 197949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in/out] context 198949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// The execution context in which to run the commands. Can be NULL in which case the default 199949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// context will be used. 200949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] stop_on_continue 201949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true execution will end on the first command that causes the process in the 202949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// execution context to continue. If \false, we won't check the execution status. 203949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] stop_on_error 204949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true execution will end on the first command that causes an error. 205949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] echo_commands 206949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true echo the command before executing it. If \false, execute silently. 207949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[in] print_results 208949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// If \b true print the results of the command after executing it. If \false, execute silently. 209949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// @param[out] result 210949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// This is marked as succeeding with no output if all commands execute safely, 211949d5acde6684b5824a26034457410cdf3823dfeJim Ingham /// and failed with some explanation if we aborted executing the commands at some point. 212949d5acde6684b5824a26034457410cdf3823dfeJim Ingham //------------------------------------------------------------------ 213949d5acde6684b5824a26034457410cdf3823dfeJim Ingham void 214949d5acde6684b5824a26034457410cdf3823dfeJim Ingham HandleCommandsFromFile (FileSpec &file, 215b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton ExecutionContext *context, 216b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool stop_on_continue, 217b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool stop_on_error, 218b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool echo_commands, 21901bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata bool print_results, 22001bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata LazyBool add_to_history, 221b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandReturnObject &result); 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 223e0da7a5ba288669df3a4d51059aa0f78f729c6b1Caroline Tice CommandObject * 224e0da7a5ba288669df3a4d51059aa0f78f729c6b1Caroline Tice GetCommandObjectForCommand (std::string &command_line); 225e0da7a5ba288669df3a4d51059aa0f78f729c6b1Caroline Tice 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // This handles command line completion. You are given a pointer to the command string buffer, to the current cursor, 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // and to the end of the string (in case it is not NULL terminated). 22803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham // You also passed in an StringList object to fill with the returns. 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // The first element of the array will be filled with the string that you would need to insert at 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // the cursor point to complete the cursor point to the longest common matching prefix. 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // If you want to limit the number of elements returned, set max_return_elements to the number of elements 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // you want returned. Otherwise set max_return_elements to -1. 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // If you want to start some way into the match list, then set match_start_point to the desired start 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // point. 2356247dbee41ec51e9a082df7e86269c0f47f28160Jim Ingham // Returns: 2366247dbee41ec51e9a082df7e86269c0f47f28160Jim Ingham // -1 if the completion character should be inserted 2376247dbee41ec51e9a082df7e86269c0f47f28160Jim Ingham // -2 if the entire command line should be deleted and replaced with matches.GetStringAtIndex(0) 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // INT_MAX if the number of matches is > max_return_elements, but it is expensive to compute. 2396247dbee41ec51e9a082df7e86269c0f47f28160Jim Ingham // Otherwise, returns the number of matches. 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // FIXME: Only max_return_elements == -1 is supported at present. 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HandleCompletion (const char *current_line, 245b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton const char *cursor, 246b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton const char *last_char, 247b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int match_start_point, 248b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int max_return_elements, 249b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StringList &matches); 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // This version just returns matches, and doesn't compute the substring. It is here so the 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Help command can call it for the first argument. 253802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham // word_complete tells whether a the completions are considered a "complete" response (so the 254802f8b0e11525a61f6becfd3562222b2cfaea965Jim Ingham // completer should complete the quote & put a space after the word. 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HandleCompletionMatches (Args &input, 258b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int &cursor_index, 259b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int &cursor_char_position, 260b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int match_start_point, 261b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton int max_return_elements, 262b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool &word_complete, 263b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StringList &matches); 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 267b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetCommandNamesMatchingPartialString (const char *cmd_cstr, 268b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton bool include_aliases, 269b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StringList &matches); 27024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 2726b1596d81c34c6efb10ed51a3572d6b145b73f5bEnrico Granata GetHelp (CommandReturnObject &result, 2731ac6d1f9200a875cc4f761e278d29658599431c0Enrico Granata uint32_t types = eCommandTypesAllThem); 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 276b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetAliasHelp (const char *alias_name, 277b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton const char *command_name, 278b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StreamString &help_string); 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner OutputFormattedHelpText (Stream &stream, 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *command_word, 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *separator, 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *help_text, 28536da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton size_t max_word_len); 2861bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata 2871bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata // this mimics OutputFormattedHelpText but it does perform a much simpler 2881bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata // formatting, basically ensuring line alignment. This is only good if you have 2891bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata // some complicated layout for your help text and want as little help as reasonable 2901bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata // in properly displaying it. Most of the times, you simply want to type some text 2911bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata // and have it printed in a reasonable way on screen. If so, use OutputFormattedHelpText 2921bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata void 2931bba6e50d400090eb81efd7ab51957dfcbef06c0Enrico Granata OutputHelpText (Stream &stream, 29484da01332193aac7f3bba77d09afc1f7e3fb8dfaGreg Clayton const char *command_word, 29584da01332193aac7f3bba77d09afc1f7e3fb8dfaGreg Clayton const char *separator, 29684da01332193aac7f3bba77d09afc1f7e3fb8dfaGreg Clayton const char *help_text, 29784da01332193aac7f3bba77d09afc1f7e3fb8dfaGreg Clayton uint32_t max_word_len); 29824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29963094e0bb161580564954dee512955c1c79d3476Greg Clayton Debugger & 30063094e0bb161580564954dee512955c1c79d3476Greg Clayton GetDebugger () 30163094e0bb161580564954dee512955c1c79d3476Greg Clayton { 30263094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_debugger; 30363094e0bb161580564954dee512955c1c79d3476Greg Clayton } 304b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton 305bcaf99a74367d464dd38011e26b9b4be56b503baGreg Clayton ExecutionContext 306b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetExecutionContext() 307b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton { 308bcaf99a74367d464dd38011e26b9b4be56b503baGreg Clayton return m_exe_ctx_ref.Lock(); 309b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton } 310b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton 311b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton void 312b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton UpdateExecutionContext (ExecutionContext *override_context); 313b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton 314b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton lldb::PlatformSP 315b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton GetPlatform (bool prefer_target_platform); 31624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 31724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char * 31824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ProcessEmbeddedScriptCommands (const char *arg); 31924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char * 32124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPrompt (); 32224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 32424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetPrompt (const char *); 3255e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham 3265e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham bool Confirm (const char *message, bool default_answer); 3275e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham 3285e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham static size_t 3295e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham GetConfirmationInputReaderCallback (void *baton, 3305e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham InputReader &reader, 3315e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham lldb::InputReaderAction action, 3325e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham const char *bytes, 3335e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham size_t bytes_len); 3345e16ef58a8bc2788be0ba03d8b2d0e9f3650fa5dJim Ingham 33524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 33624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner LoadCommandDictionary (); 33724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 33924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Initialize (); 34024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 34224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetScriptLanguage (lldb::ScriptLanguage lang); 34324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 34624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HasCommands (); 34724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 34924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HasAliases (); 35024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 35124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 35224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HasUserCommands (); 35324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 35424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 35524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HasAliasOptions (); 35624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 35724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 358b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton BuildAliasCommandArgs (CommandObject *alias_cmd_obj, 359b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton const char *alias_name, 360b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton Args &cmd_args, 361b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton std::string &raw_input_string, 362b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandReturnObject &result); 36324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 36524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetOptionArgumentPosition (const char *in_string); 36624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ScriptInterpreter * 368db05491da80820047dc218542c88ba0d9f08fc71Enrico Granata GetScriptInterpreter (bool can_create = true); 36924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 370887aa2898314218406275a34cbec30c11cd00acdGreg Clayton void 371887aa2898314218406275a34cbec30c11cd00acdGreg Clayton SkipLLDBInitFiles (bool skip_lldbinit_files) 372887aa2898314218406275a34cbec30c11cd00acdGreg Clayton { 373887aa2898314218406275a34cbec30c11cd00acdGreg Clayton m_skip_lldbinit_files = skip_lldbinit_files; 374887aa2898314218406275a34cbec30c11cd00acdGreg Clayton } 375887aa2898314218406275a34cbec30c11cd00acdGreg Clayton 376574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham void 377574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham SkipAppInitFiles (bool skip_app_init_files) 378574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham { 379574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham m_skip_app_init_files = m_skip_lldbinit_files; 380574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham } 381574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 38324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetSynchronous (); 3846247dbee41ec51e9a082df7e86269c0f47f28160Jim Ingham 38565124eac53b7a214906e8931be314e429bbbeb30Greg Clayton size_t 38624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindLongestCommandWord (CommandObject::CommandMap &dict); 38724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 38824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 389b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton FindCommandsForApropos (const char *word, 390b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton StringList &commands_found, 391589d3618411e8a757992482e4d0cb3cb79480f2eJim Ingham StringList &commands_help, 392589d3618411e8a757992482e4d0cb3cb79480f2eJim Ingham bool search_builtin_commands, 393589d3618411e8a757992482e4d0cb3cb79480f2eJim Ingham bool search_user_commands); 394892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice 395892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice bool 396892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice GetBatchCommandMode () { return m_batch_command_mode; } 397892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice 398892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice void 399892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice SetBatchCommandMode (bool value) { m_batch_command_mode = value; } 400db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata 401db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata void 402b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata ChildrenTruncated () 403db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata { 404db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata if (m_truncation_warning == eNoTruncation) 405db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata m_truncation_warning = eUnwarnedTruncation; 406db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata } 407db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata 408db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata bool 409b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata TruncationWarningNecessary () 410db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata { 411db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata return (m_truncation_warning == eUnwarnedTruncation); 412db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata } 413db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata 414db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata void 415b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata TruncationWarningGiven () 416db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata { 417db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata m_truncation_warning = eWarnedTruncation; 418db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata } 419db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata 420db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata const char * 421b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata TruncationWarningText () 422db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata { 423db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata return "*** Some of your variables have more members than the debugger will show by default. To show all of them, you can either use the --show-all-children option to %s or raise the limit by changing the target.max-children-count setting.\n"; 424db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata } 4255a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 426b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata const CommandHistory& 427b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata GetCommandHistory () const 428b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata { 429b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata return m_command_history; 430b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata } 431b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata 432b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata CommandHistory& 433b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata GetCommandHistory () 434b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata { 435b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata return m_command_history; 436b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata } 437b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata 4389f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton //------------------------------------------------------------------ 4399f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton // Properties 4409f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton //------------------------------------------------------------------ 4419f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton bool 4429f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton GetExpandRegexAliases () const; 4439f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton 444dcb36c76090fdbf52f020bdd3fada62e0cffcc8dEnrico Granata bool 445dcb36c76090fdbf52f020bdd3fada62e0cffcc8dEnrico Granata GetPromptOnQuit () const; 446dcb36c76090fdbf52f020bdd3fada62e0cffcc8dEnrico Granata 4476fefc3a3915bcaf899b9179c43b1b7b2f693b3adEnrico Granata bool 4486fefc3a3915bcaf899b9179c43b1b7b2f693b3adEnrico Granata GetStopCmdSourceOnError () const; 4496fefc3a3915bcaf899b9179c43b1b7b2f693b3adEnrico Granata 45024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 45124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class Debugger; 45224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 45424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetSynchronous (bool value); 45524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 456d40f8a68b49a43264ff41a0f0ef51bef6372e8b3Jim Ingham lldb::CommandObjectSP 457d40f8a68b49a43264ff41a0f0ef51bef6372e8b3Jim Ingham GetCommandSP (const char *cmd, bool include_aliases = true, bool exact = true, StringList *matches = NULL); 458d40f8a68b49a43264ff41a0f0ef51bef6372e8b3Jim Ingham 45924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 460f5c0c72346eb8137107dbee95b12efb700117c13Greg Clayton 461f5c0c72346eb8137107dbee95b12efb700117c13Greg Clayton Error 462f5c0c72346eb8137107dbee95b12efb700117c13Greg Clayton PreprocessCommand (std::string &command); 46324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 464b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton Debugger &m_debugger; // The debugger session that this interpreter is associated with 465bcaf99a74367d464dd38011e26b9b4be56b503baGreg Clayton ExecutionContextRef m_exe_ctx_ref; // The current execution context to use when handling commands 46624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool m_synchronous_execution; 467887aa2898314218406275a34cbec30c11cd00acdGreg Clayton bool m_skip_lldbinit_files; 468574c3d63822cc7fd52bf6f6a94b6882fec4c8ce9Jim Ingham bool m_skip_app_init_files; 469b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandObject::CommandMap m_command_dict; // Stores basic built-in commands (they cannot be deleted, removed or overwritten). 470b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandObject::CommandMap m_alias_dict; // Stores user aliases/abbreviations for commands 471b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton CommandObject::CommandMap m_user_dict; // Stores user-defined commands 472b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton OptionArgMap m_alias_options; // Stores any options (with or without arguments) that go with any alias. 473b1fb72761226817e7f687eca21cbe9c0a3ec4cf6Enrico Granata CommandHistory m_command_history; 474b72d0f098e45936fa72e26b1a026c603e17e2d6cGreg Clayton std::string m_repeat_command; // Stores the command that will be executed for an empty command string. 475102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<ScriptInterpreter> m_script_interpreter_ap; 476949d5acde6684b5824a26034457410cdf3823dfeJim Ingham char m_comment_char; 477892fadd1f1001d1082cd2edcf282fee0cba8ac87Caroline Tice bool m_batch_command_mode; 478db64d95b32062acbf961019aa6c1025237d3145cEnrico Granata ChildrenTruncatedWarningStatus m_truncation_warning; // Whether we truncated children and whether the user has been told 47901bc2d493b48e4904e3241a7768e18fdd9bb6835Enrico Granata uint32_t m_command_source_depth; 4805a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 48124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 48224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 48524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_CommandInterpreter_h_ 487