diff options
Diffstat (limited to 'tools/lldb-mi/MIDriverBase.cpp')
-rw-r--r-- | tools/lldb-mi/MIDriverBase.cpp | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/tools/lldb-mi/MIDriverBase.cpp b/tools/lldb-mi/MIDriverBase.cpp new file mode 100644 index 000000000000..353f5c32a164 --- /dev/null +++ b/tools/lldb-mi/MIDriverBase.cpp @@ -0,0 +1,195 @@ +//===-- 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 <lldb/API/SBEvent.h> +#include <lldb/API/SBBroadcaster.h> + +// 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 +}
\ No newline at end of file |