blob: 07943d02c4d0b4cc28f7b5148c7c0a080d468fde [file] [log] [blame]
Deepak Panickal6f9c4682014-05-16 10:51:01 +00001//===-- MICmnStreamStderr.h -------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Deepak Panickal6f9c4682014-05-16 10:51:01 +000010#pragma once
11
12// In-house headers:
Deepak Panickal6f9c4682014-05-16 10:51:01 +000013#include "MICmnBase.h"
14#include "MIUtilSingletonBase.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000015#include "MIUtilString.h"
Deepak Panickal6f9c4682014-05-16 10:51:01 +000016#include "MIUtilThreadBaseStd.h"
17
Kate Stoneb9c1b512016-09-06 20:57:50 +000018//++
19//============================================================================
Zachary Turner1d6af022014-11-17 18:06:21 +000020// Details: MI common code class. The MI driver requires this object.
21// CMICmnStreamStderr sets up and tears downs stderr for the driver.
22//
23// Singleton class.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000024//--
Kate Stoneb9c1b512016-09-06 20:57:50 +000025class CMICmnStreamStderr : public CMICmnBase,
26 public MI::ISingleton<CMICmnStreamStderr> {
27 friend class MI::ISingleton<CMICmnStreamStderr>;
Deepak Panickal6f9c4682014-05-16 10:51:01 +000028
Kate Stoneb9c1b512016-09-06 20:57:50 +000029 // Statics:
30public:
31 static bool TextToStderr(const CMIUtilString &vrTxt);
32 static bool LLDBMsgToConsole(const CMIUtilString &vrTxt);
Deepak Panickal877569c2014-06-24 16:35:50 +000033
Kate Stoneb9c1b512016-09-06 20:57:50 +000034 // Methods:
35public:
36 bool Initialize() override;
37 bool Shutdown() override;
38 //
39 bool Lock();
40 bool Unlock();
41 bool Write(const CMIUtilString &vText, const bool vbSendToLog = true);
42 bool WriteLLDBMsg(const CMIUtilString &vText, const bool vbSendToLog = true);
Deepak Panickal6f9c4682014-05-16 10:51:01 +000043
Kate Stoneb9c1b512016-09-06 20:57:50 +000044 // Methods:
45private:
46 /* ctor */ CMICmnStreamStderr();
47 /* ctor */ CMICmnStreamStderr(const CMICmnStreamStderr &);
48 void operator=(const CMICmnStreamStderr &);
49 //
50 bool WritePriv(const CMIUtilString &vText,
51 const CMIUtilString &vTxtForLogFile,
52 const bool vbSendToLog = true);
Deepak Panickal6f9c4682014-05-16 10:51:01 +000053
Kate Stoneb9c1b512016-09-06 20:57:50 +000054 // Overridden:
55private:
56 // From CMICmnBase
57 /* dtor */ ~CMICmnStreamStderr() override;
Zachary Turner1d6af022014-11-17 18:06:21 +000058
Kate Stoneb9c1b512016-09-06 20:57:50 +000059 // Attributes:
60private:
61 CMIUtilThreadMutex m_mutex; // Mutex object for sync during Write()
Deepak Panickal6f9c4682014-05-16 10:51:01 +000062};