]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmnLogMediumFile.h
MFV r288408:
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmnLogMediumFile.h
1 //===-- MICmnLogMediumFile.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
10 //++
11 // File:        MICmnLogMediumFile.h
12 //
13 // Overview:    CMICmnLogMediumFile interface.
14 //
15 // Environment: Compilers:  Visual C++ 12.
16 //                          gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
17 //              Libraries:  See MIReadmetxt.
18 //
19 // Copyright:   None.
20 //--
21
22 #pragma once
23
24 // In-house headers:
25 #include "MIUtilFileStd.h"
26 #include "MIUtilString.h"
27 #include "MICmnBase.h"
28 #include "MICmnLog.h"
29 #include "MIUtilDateTimeStd.h"
30
31 //++ ============================================================================
32 // Details: MI common code implementation class. Logs application fn trace/message/
33 //          error messages to a file. Used as part of the CMICmnLog Logger
34 //          system. When instantiated *this object is register with the Logger
35 //          which the Logger when given data to write to registered medium comes
36 //          *this medium.
37 //          Singleton class.
38 // Gotchas: None.
39 // Authors: Illya Rudkin 30/01/2014.
40 // Changes: None.
41 //--
42 class CMICmnLogMediumFile : public CMICmnBase, public CMICmnLog::IMedium
43 {
44     // Statics:
45   public:
46     static CMICmnLogMediumFile &Instance(void);
47
48     // Methods:
49   public:
50     bool SetHeaderTxt(const CMIUtilString &vText);
51     bool SetVerbosity(const MIuint veType);
52     MIuint GetVerbosity(void) const;
53     const CMIUtilString &GetFileName(void) const;
54     const CMIUtilString &GetFileNamePath(void) const;
55     bool IsOk(void) const;
56     bool IsFileExist(void) const;
57     const CMIUtilString &GetLineReturn(void) const;
58
59     // Overridden:
60   public:
61     // From CMICmnBase
62     /* dtor */ virtual ~CMICmnLogMediumFile(void);
63     // From CMICmnLog::IMedium
64     virtual bool Initialize(void);
65     virtual const CMIUtilString &GetName(void) const;
66     virtual bool Write(const CMIUtilString &vData, const CMICmnLog::ELogVerbosity veType);
67     virtual const CMIUtilString &GetError(void) const;
68     virtual bool Shutdown(void);
69
70     // Methods:
71   private:
72     /* ctor */ CMICmnLogMediumFile(void);
73     /* ctor */ CMICmnLogMediumFile(const CMICmnLogMediumFile &);
74     void operator=(const CMICmnLogMediumFile &);
75
76     bool FileWriteEnglish(const CMIUtilString &vData);
77     bool FileFormFileNamePath(void);
78     CMIUtilString MassagedData(const CMIUtilString &vData, const CMICmnLog::ELogVerbosity veType);
79     bool FileWriteHeader(void);
80     MIchar ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity veType) const;
81     CMIUtilString ConvertCr(const CMIUtilString &vData) const;
82
83     // Attributes:
84   private:
85     const CMIUtilString m_constThisMediumName;
86     const CMIUtilString m_constMediumFileName;
87     //
88     CMIUtilString m_fileNamePath;
89     MIuint m_eVerbosityType;
90     CMIUtilString m_strDate;
91     CMIUtilString m_fileHeaderTxt;
92     CMIUtilFileStd m_file;
93     CMIUtilDateTimeStd m_dateTime;
94 };