1 //===-- MICmnStreamStdout.h -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
13 #include "MICmnBase.h"
14 #include "MIUtilSingletonBase.h"
15 #include "MIUtilString.h"
16 #include "MIUtilThreadBaseStd.h"
19 //============================================================================
20 // Details: MI common code class. The MI driver requires this object.
21 // CMICmnStreamStdout sets up and tears downs stdout for the driver.
25 class CMICmnStreamStdout : public CMICmnBase,
26 public MI::ISingleton<CMICmnStreamStdout> {
27 friend class MI::ISingleton<CMICmnStreamStdout>;
31 static bool TextToStdout(const CMIUtilString &vrTxt);
32 static bool WritePrompt();
36 bool Initialize() override;
37 bool Shutdown() override;
41 bool Write(const CMIUtilString &vText, const bool vbSendToLog = true);
42 bool WriteMIResponse(const CMIUtilString &vText,
43 const bool vbSendToLog = true);
47 /* ctor */ CMICmnStreamStdout();
48 /* ctor */ CMICmnStreamStdout(const CMICmnStreamStdout &);
49 void operator=(const CMICmnStreamStdout &);
51 bool WritePriv(const CMIUtilString &vText,
52 const CMIUtilString &vTxtForLogFile,
53 const bool vbSendToLog = true);
58 /* dtor */ ~CMICmnStreamStdout() override;
62 CMIUtilThreadMutex m_mutex; // Mutex object for sync during writing to stream