diff options
Diffstat (limited to 'tools/lldb-mi/MICmdBase.h')
-rw-r--r-- | tools/lldb-mi/MICmdBase.h | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/tools/lldb-mi/MICmdBase.h b/tools/lldb-mi/MICmdBase.h deleted file mode 100644 index 4e32ed6a5262..000000000000 --- a/tools/lldb-mi/MICmdBase.h +++ /dev/null @@ -1,193 +0,0 @@ -//===-- MICmdBase.h ---------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#pragma once - -#include <functional> - -#include "lldb/API/SBError.h" - -#include "MICmdArgSet.h" -#include "MICmdData.h" -#include "MICmdFactory.h" -#include "MICmdInvoker.h" -#include "MICmnBase.h" -#include "MICmnMIResultRecord.h" -#include "MICmnResources.h" -#include "MIUtilString.h" - -// Declarations: -class CMICmnLLDBDebugSessionInfo; - -//++ -//============================================================================ -// Details: MI command base class. MI commands derive from this base class. -// The Command Factory creates command objects and passes them to the -// Command Invoker. The Invoker takes ownership of any commands created -// which means it is the only object to delete them when a command is -// finished working. Commands do not delete themselves. -// There are two types of command implicitly defined by the state of -// the m_bWaitForEventFromSBDebugger flag. There is the event type -// command which registers (command fn) callbacks with the SBListener -// does some work then wakes up again when called back, does more work -// perhaps, ends, then the Invoker calls the command's Acknowledge -// function. The other type of command is one that just does some work, -// ends, then the Invoker calls the command's Acknowledge function. No -// events set up. -// A command's Execute(), Acknowledge() and event callback functions -// are -// carried out in the main thread. -// A command may use the argument derived object classes -// (CMICmdArgValBase) -// to factor handling and parsing of different types of arguments -// presented to a command. A command will produce an error should it -// be presented with arguments or options it does not understand. -//-- -class CMICmdBase : public CMICmnBase, - public CMICmdInvoker::ICmd, - public CMICmdFactory::ICmd { - // Methods: -public: - CMICmdBase(); - - // Overridden: - // From CMICmdInvoker::ICmd - const SMICmdData &GetCmdData() const override; - const CMIUtilString &GetErrorDescription() const override; - void SetCmdData(const SMICmdData &vCmdData) override; - void CmdFinishedTellInvoker() const override; - const CMIUtilString &GetMIResultRecord() const override; - const CMIUtilString &GetMIResultRecordExtra() const override; - bool HasMIResultRecordExtra() const override; - bool ParseArgs() override; - // From CMICmdFactory::ICmd - const CMIUtilString &GetMiCmd() const override; - CMICmdFactory::CmdCreatorFnPtr GetCmdCreatorFn() const override; - - virtual MIuint GetGUID(); - void AddCommonArgs(); - - // Overrideable: - ~CMICmdBase() override; - virtual bool GetExitAppOnCommandFailure() const; - - // Methods: -protected: - void SetError(const CMIUtilString &rErrMsg); - bool HandleSBError(const lldb::SBError &error, - const std::function<bool()> &successHandler = - [] { return MIstatus::success; }, - const std::function<void()> &errorHandler = [] {}); - bool HandleSBErrorWithSuccess(const lldb::SBError &error, - const std::function<bool()> &successHandler); - bool HandleSBErrorWithFailure(const lldb::SBError &error, - const std::function<void()> &errorHandler); - template <class T> T *GetOption(const CMIUtilString &vStrOptionName); - bool ParseValidateCmdOptions(); - - // Attributes: - CMICmdFactory::CmdCreatorFnPtr m_pSelfCreatorFn; - CMIUtilString m_strCurrentErrDescription; // Reason for Execute or Acknowledge - // function failure - SMICmdData m_cmdData; // Holds information/status of *this command. Used by - // other MI code to report or determine state of a - // command. - bool m_bWaitForEventFromSBDebugger; // True = yes event type command wait, - // false = command calls Acknowledge() - // straight after Execute() - // no waiting - CMIUtilString - m_strMiCmd; // The MI text identifying *this command i.e. 'break-insert' - CMICmnMIResultRecord m_miResultRecord; // This is completed in the - // Acknowledge() function and returned - // to the Command Invoker to proceed - // stdout output. Each command forms 1 response to its input. - CMIUtilString m_miResultRecordExtra; // This is completed in the Acknowledge() - // function and returned to the Command - // Invoker to proceed - // stdout output. Hack command produce more response text to help the client - // because of using LLDB - CMICmnLLDBDebugSessionInfo &m_rLLDBDebugSessionInfo; // Access to command - // sharing information or - // data across any and - // all command based - // derived classes. - bool m_bHasResultRecordExtra; // True = Yes command produced additional MI - // output to its 1 line response, false = no - // extra MI output - // formed. - CMICmdArgSet m_setCmdArgs; // The list of arguments *this command needs to - // parse from the options string to carry out work. - const CMIUtilString m_constStrArgThreadGroup; - const CMIUtilString m_constStrArgThread; - const CMIUtilString m_constStrArgFrame; - const CMIUtilString m_constStrArgConsume; - - // These 3 members can be used by the derived classes to make any of - // "thread", "frame" or "thread-group" mandatory. - bool m_ThreadGrpArgMandatory; - bool m_ThreadArgMandatory; - bool m_FrameArgMandatory; -}; - -//++ -// Details: Retrieve the command argument or option object pointer so that it -// can be -// examined. If the option found and valid get the value (number, -// string or list -// - see CMICmdArgValBase class) from it to use with the command's -// decision -// making. If the argument is not found the command's error description -// is set -// describing the error condition. -// Type: Template method. -// Args: vStrOptionName - (R) The text name of the argument or option to -// search for in -// the list of the command's possible arguments -// or options. -// Return: T * - CMICmdArgValBase derived object. -// - nullptr = function has failed, unable to retrieve the -// option/arg object. -// Throws: None. -//-- -template <class T> -T *CMICmdBase::GetOption(const CMIUtilString &vStrOptionName) { - CMICmdArgValBase *pPtrBase = nullptr; - if (!m_setCmdArgs.GetArg(vStrOptionName, pPtrBase)) { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), - m_cmdData.strMiCmd.c_str(), - vStrOptionName.c_str())); - return nullptr; - } - - return static_cast<T *>(pPtrBase); -} - -//++ -// Details: Retrieve the command argument or option object pointer using -// template function -// CMICmdBase::GetOption(). Should the argument (by name) not be found -// the -// command will exit with a failure (set in GetOption()). -// Type: Preprocessor macro. -// Args: a - (R) The actual variable's name. -// b - (R) The type of variable (appended to CMICmdArgVal i.e. -// CMICmdArgValString). -// c - (R) The text name of the argument or option to search for in -// the list of -// the command's possible arguments or options. -// Return: T * - CMICmdArgValBase derived object. -// - nullptr = function has failed, unable to retrieve the -// option/arg object. -// Throws: None. -//-- -#define CMICMDBASE_GETOPTION(a, b, c) \ - CMICmdArgVal##b *a = CMICmdBase::GetOption<CMICmdArgVal##b>(c); \ - if (a == nullptr) \ - return MIstatus::failure; -// This comment is to stop compile warning for #define |