diff options
Diffstat (limited to 'contrib/llvm-project/lldb/tools/lldb-mi/MIDriverBase.cpp')
-rw-r--r-- | contrib/llvm-project/lldb/tools/lldb-mi/MIDriverBase.cpp | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/tools/lldb-mi/MIDriverBase.cpp b/contrib/llvm-project/lldb/tools/lldb-mi/MIDriverBase.cpp new file mode 100644 index 000000000000..b8844e288430 --- /dev/null +++ b/contrib/llvm-project/lldb/tools/lldb-mi/MIDriverBase.cpp @@ -0,0 +1,179 @@ +//===-- MIDriverBase.cpp ----------------------------------------*- 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 +// +//===----------------------------------------------------------------------===// + +// Third party headers: +#include "lldb/API/SBBroadcaster.h" +#include "lldb/API/SBEvent.h" + +// In-house headers: +#include "MIDriverBase.h" + +//++ +// Details: CMIDriverBase constructor. +// Type: Method. +// Args: None. +// Return: None. +// Throws: None. +//-- +CMIDriverBase::CMIDriverBase() + : m_pDriverFallThru(nullptr), m_pDriverParent(nullptr), m_bExitApp(false) {} + +//++ +// Details: CMIDriverBase destructor. +// Type: Overrideable. +// Args: None. +// Return: None. +// Throws: None. +//-- +CMIDriverBase::~CMIDriverBase() { m_pDriverFallThru = nullptr; } + +//++ +// Details: This function allows *this driver to call on another driver to +// perform work +// should this driver not be able to handle the client data input. +// Type: Overrideable. +// Check the error message if the function returns a failure. +// Type: Overridden. +// Args: vCmd - (R) Command instruction to interpret. +// vwErrMsg - (W) Status description on command failing. +// Return: MIstatus::success - Command succeeded. +// MIstatus::failure - Command failed. +// Throws: None. +//-- +bool CMIDriverBase::DoFallThruToAnotherDriver(const CMIUtilString &vCmd, + CMIUtilString &vwErrMsg) { + // Do nothing - override and implement. Use m_pDriverFallThru. + return MIstatus::success; +} + +//++ +// Details: This function allows *this driver to call on another driver to +// perform work +// should this driver not be able to handle the client data input. +// Type: Overrideable. +// Args: vrOtherDriver - (R) Reference to another driver object. +// Return: MIstatus::success - Functional succeeded. +// MIstatus::failure - Functional failed. +// Throws: None. +//-- +bool CMIDriverBase::SetDriverToFallThruTo(const CMIDriverBase &vrOtherDriver) { + MIunused(vrOtherDriver); + + // Do nothing - override and implement. Set m_pDriverFallThru. + + return MIstatus::success; +} + +//++ +// Details: This function allows *this driver to call functionality on the +// parent driver +// ask for information for example. +// Type: Overrideable. +// Args: vrOtherDriver - (R) Reference to another driver object. +// Return: MIstatus::success - Functional succeeded. +// MIstatus::failure - Functional failed. +// Throws: None. +//-- +bool CMIDriverBase::SetDriverParent(const CMIDriverBase &vrOtherDriver) { + MIunused(vrOtherDriver); + + // Do nothing - override and implement. Set m_pDriverParent. + + return MIstatus::success; +} + +//++ +// Details: Retrieve the parent driver to *this driver if one assigned. If +// assigned *this +// is the pass through driver that the parent driver passes work to. +// Type: Method. +// Args: None. +// Return: CMIDriverBase * - Pointer to a driver object. +// - NULL = there is not parent to *this driver. +// Throws: None. +//-- +CMIDriverBase *CMIDriverBase::GetDriversParent() const { + return m_pDriverParent; +} + +//++ +// Details: Retrieve the pointer to the other fall through driver *this driver +// is using +// (or not using). +// Type: Method. +// Args: None. +// Return: CMIDriverBase * - Pointer to other driver. +// - NULL if no driver set. +// Throws: None. +//-- +CMIDriverBase *CMIDriverBase::GetDriverToFallThruTo() const { + return m_pDriverFallThru; +} + +//++ +// Details: *this driver provides a file stream to other drivers on which *this +// driver +// write's out to and they read as expected input. *this driver is +// passing +// through commands to the (child) pass through assigned driver. +// Type: Overrideable. +// Args: None. +// Return: FILE * - Pointer to stream. +// Throws: None. +//-- +FILE *CMIDriverBase::GetStdin() const { + // Do nothing - override and implement + return nullptr; +} + +//++ +// Details: *this driver provides a file stream to other pass through assigned +// drivers +// so they know what to write to. +// Type: Overrideable. +// Args: None. +// Return: FILE * - Pointer to stream. +// Throws: None. +//-- +FILE *CMIDriverBase::GetStdout() const { + // Do nothing - override and implement + return nullptr; +} + +//++ +// Details: *this driver provides a error file stream to other pass through +// assigned drivers +// so they know what to write to. +// Type: Overrideable. +// Args: None. +// Return: FILE * - Pointer to stream. +// Throws: None. +//-- +FILE *CMIDriverBase::GetStderr() const { + // Do nothing - override and implement + return nullptr; +} + +//++ +// Details: Set the MI Driver's exit application flag. The application checks +// this flag +// after every stdin line is read so the exit may not be instantaneous. +// If vbForceExit is false the MI Driver queries its state and +// determines if is +// should exit or continue operating depending on that running state. +// Type: Overrideable. +// Args: vbForceExit - (R) True = Do not query, set state to exit, false = +// query if can/should exit right now. +// Return: None. +// Throws: None. +//-- +void CMIDriverBase::SetExitApplicationFlag(const bool vbForceExit) { + MIunused(vbForceExit); + + // Do nothing - override and implement +} |