//===-- MIDriverBase.cpp ----------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// //++ // File: MIDriverBase.cpp // // Overview: CMIDriverBase implementation. // // Environment: Compilers: Visual C++ 12. // gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 // Libraries: See MIReadmetxt. // // Copyright: None. //-- // Third party headers: #include #include // In-house headers: #include "MIDriverBase.h" //++ ------------------------------------------------------------------------------------ // Details: CMIDriverBase constructor. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- CMIDriverBase::CMIDriverBase(void) : m_pDriverFallThru(nullptr) , m_pDriverParent(nullptr) , m_bExitApp(false) { } //++ ------------------------------------------------------------------------------------ // Details: CMIDriverBase destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- CMIDriverBase::~CMIDriverBase(void) { 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) Error 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(void) 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(void) 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(void) 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(void) 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(void) 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 instantious. // 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 }