| //===-- MICmnStreamStderr.h -------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #pragma once |
| |
| // In-house headers: |
| #include "MICmnBase.h" |
| #include "MIUtilSingletonBase.h" |
| #include "MIUtilString.h" |
| #include "MIUtilThreadBaseStd.h" |
| |
| //++ |
| //============================================================================ |
| // Details: MI common code class. The MI driver requires this object. |
| // CMICmnStreamStderr sets up and tears downs stderr for the driver. |
| // |
| // Singleton class. |
| //-- |
| class CMICmnStreamStderr : public CMICmnBase, |
| public MI::ISingleton<CMICmnStreamStderr> { |
| friend class MI::ISingleton<CMICmnStreamStderr>; |
| |
| // Statics: |
| public: |
| static bool TextToStderr(const CMIUtilString &vrTxt); |
| static bool LLDBMsgToConsole(const CMIUtilString &vrTxt); |
| |
| // Methods: |
| public: |
| bool Initialize() override; |
| bool Shutdown() override; |
| // |
| bool Lock(); |
| bool Unlock(); |
| bool Write(const CMIUtilString &vText, const bool vbSendToLog = true); |
| bool WriteLLDBMsg(const CMIUtilString &vText, const bool vbSendToLog = true); |
| |
| // Methods: |
| private: |
| /* ctor */ CMICmnStreamStderr(); |
| /* ctor */ CMICmnStreamStderr(const CMICmnStreamStderr &); |
| void operator=(const CMICmnStreamStderr &); |
| // |
| bool WritePriv(const CMIUtilString &vText, |
| const CMIUtilString &vTxtForLogFile, |
| const bool vbSendToLog = true); |
| |
| // Overridden: |
| private: |
| // From CMICmnBase |
| /* dtor */ ~CMICmnStreamStderr() override; |
| |
| // Attributes: |
| private: |
| CMIUtilThreadMutex m_mutex; // Mutex object for sync during Write() |
| }; |