llvm-project/lldb/tools/lldb-mi/MIDriverBase.h

68 lines
2.5 KiB
C++

//===-- MIDriverBase.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
// Third party headers:
#include "lldb/API/SBBroadcaster.h"
#include "lldb/API/SBDebugger.h"
// In-house headers:
#include "MIUtilString.h"
// Declarations:
namespace lldb {
class SBBroadcaster;
}
//++
//============================================================================
// Details: MI driver base implementation class. This class has been created so
// not have to edit the lldb::SBBroadcaster class code. Functionality
// and attributes need to be common to the LLDB Driver class and the
// MI Driver class (derived from lldb::SBBroadcaster) so they can call
// upon each other for functionality fall through and allow the
// CDriverMgr to manage either (any) driver to be operated on.
// Each driver instance (the CMIDriver, LLDB::Driver) has its own
// LLDB::SBDebugger object.
//--
class CMIDriverBase {
// Methods:
public:
/* ctor */ CMIDriverBase();
CMIDriverBase *GetDriverToFallThruTo() const;
CMIDriverBase *GetDriversParent() const;
// Overrideable:
public:
/* dtor */ virtual ~CMIDriverBase();
virtual bool DoFallThruToAnotherDriver(const CMIUtilString &vCmd,
CMIUtilString &vwErrMsg);
virtual bool SetDriverToFallThruTo(const CMIDriverBase &vrOtherDriver);
virtual bool SetDriverParent(const CMIDriverBase &vrOtherDriver);
virtual const CMIUtilString &GetDriverName() const = 0;
virtual const CMIUtilString &GetDriverId() const = 0;
virtual void SetExitApplicationFlag(const bool vbForceExit);
// MI provide information for the pass through (child) assigned driver
virtual FILE *GetStdin() const;
virtual FILE *GetStdout() const;
virtual FILE *GetStderr() const;
// Attributes:
protected:
CMIDriverBase *m_pDriverFallThru; // Child driver to use should *this driver
// not be able to handle client input
CMIDriverBase *m_pDriverParent; // The parent driver who passes work to *this
// driver to do work
CMIUtilString m_strDriverId;
bool m_bExitApp; // True = Yes, exit application, false = continue execution
};