aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lldb-mi/MICmdBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmdBase.h')
-rw-r--r--tools/lldb-mi/MICmdBase.h193
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