//===-- 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 = NULL; } //++ //------------------------------------------------------------------------------------ // 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 }