| //===-- MICmnStreamStdout.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. |
| // CMICmnStreamStdout sets up and tears downs stdout for the driver. |
| // |
| // Singleton class. |
| //-- |
| class CMICmnStreamStdout : public CMICmnBase, |
| public MI::ISingleton<CMICmnStreamStdout> { |
| friend class MI::ISingleton<CMICmnStreamStdout>; |
| |
| // Statics: |
| public: |
| static bool TextToStdout(const CMIUtilString &vrTxt); |
| static bool WritePrompt(); |
| |
| // Methods: |
| public: |
| bool Initialize() override; |
| bool Shutdown() override; |
| // |
| bool Lock(); |
| bool Unlock(); |
| bool Write(const CMIUtilString &vText, const bool vbSendToLog = true); |
| bool WriteMIResponse(const CMIUtilString &vText, |
| const bool vbSendToLog = true); |
| |
| // Methods: |
| private: |
| /* ctor */ CMICmnStreamStdout(); |
| /* ctor */ CMICmnStreamStdout(const CMICmnStreamStdout &); |
| void operator=(const CMICmnStreamStdout &); |
| // |
| bool WritePriv(const CMIUtilString &vText, |
| const CMIUtilString &vTxtForLogFile, |
| const bool vbSendToLog = true); |
| |
| // Overridden: |
| private: |
| // From CMICmnBase |
| /* dtor */ ~CMICmnStreamStdout() override; |
| |
| // Attributes: |
| private: |
| CMIUtilThreadMutex m_mutex; // Mutex object for sync during writing to stream |
| }; |