]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/lldb/tools/lldb-mi/MICmnLogMediumFile.h
MFC r355940:
[FreeBSD/FreeBSD.git] / contrib / llvm-project / lldb / tools / lldb-mi / MICmnLogMediumFile.h
1 //===-- MICmnLogMediumFile.h ------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #pragma once
10
11 // In-house headers:
12 #include "MICmnBase.h"
13 #include "MICmnLog.h"
14 #include "MIUtilDateTimeStd.h"
15 #include "MIUtilFileStd.h"
16 #include "MIUtilString.h"
17
18 //++
19 //============================================================================
20 // Details: MI common code implementation class. Logs application fn
21 // trace/message/
22 //          error messages to a file. Used as part of the CMICmnLog Logger
23 //          system. When instantiated *this object is register with the Logger
24 //          which the Logger when given data to write to registered medium comes
25 //          *this medium.
26 //          Singleton class.
27 //--
28 class CMICmnLogMediumFile : public CMICmnBase, public CMICmnLog::IMedium {
29   // Statics:
30 public:
31   static CMICmnLogMediumFile &Instance();
32
33   // Methods:
34 public:
35   bool SetHeaderTxt(const CMIUtilString &vText);
36   bool SetVerbosity(const MIuint veType);
37   MIuint GetVerbosity() const;
38   const CMIUtilString &GetFileName() const;
39   const CMIUtilString &GetFileNamePath() const;
40   bool IsOk() const;
41   bool IsFileExist() const;
42   const CMIUtilString &GetLineReturn() const;
43   bool SetDirectory(const CMIUtilString &vPath);
44
45   // Overridden:
46 public:
47   // From CMICmnBase
48   /* dtor */ ~CMICmnLogMediumFile() override;
49   // From CMICmnLog::IMedium
50   bool Initialize() override;
51   const CMIUtilString &GetName() const override;
52   bool Write(const CMIUtilString &vData,
53              const CMICmnLog::ELogVerbosity veType) override;
54   const CMIUtilString &GetError() const override;
55   bool Shutdown() override;
56
57   // Methods:
58 private:
59   /* ctor */ CMICmnLogMediumFile();
60   /* ctor */ CMICmnLogMediumFile(const CMICmnLogMediumFile &);
61   void operator=(const CMICmnLogMediumFile &);
62
63   bool FileWriteEnglish(const CMIUtilString &vData);
64   bool FileFormFileNamePath();
65   CMIUtilString MassagedData(const CMIUtilString &vData,
66                              const CMICmnLog::ELogVerbosity veType);
67   bool FileWriteHeader();
68   char ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity veType) const;
69   CMIUtilString ConvertCr(const CMIUtilString &vData) const;
70
71   // Attributes:
72 private:
73   const CMIUtilString m_constThisMediumName;
74   const CMIUtilString m_constMediumFileNameFormat;
75   //
76   CMIUtilString m_strMediumFileName;
77   CMIUtilString m_strMediumFileDirectory;
78   CMIUtilString m_fileNamePath;
79   MIuint m_eVerbosityType;
80   CMIUtilString m_strDate;
81   CMIUtilString m_fileHeaderTxt;
82   CMIUtilFileStd m_file;
83   CMIUtilDateTimeStd m_dateTime;
84 };