forked from OSchip/llvm-project
68 lines
2.5 KiB
C++
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
|
|
};
|