diff options
Diffstat (limited to 'lldb/tools/lldb-mi/MICmnLogMediumFile.cpp')
-rw-r--r-- | lldb/tools/lldb-mi/MICmnLogMediumFile.cpp | 400 |
1 files changed, 192 insertions, 208 deletions
diff --git a/lldb/tools/lldb-mi/MICmnLogMediumFile.cpp b/lldb/tools/lldb-mi/MICmnLogMediumFile.cpp index a1dbf53c60a..9f94caf3be7 100644 --- a/lldb/tools/lldb-mi/MICmnLogMediumFile.cpp +++ b/lldb/tools/lldb-mi/MICmnLogMediumFile.cpp @@ -11,7 +11,8 @@ #include "MICmnLogMediumFile.h" #include "MICmnResources.h" -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmnLogMediumFile constructor. // Type: Method. // Args: None. @@ -19,44 +20,41 @@ // Throws: None. //-- CMICmnLogMediumFile::CMICmnLogMediumFile() - : m_constThisMediumName(MIRSRC(IDS_MEDIUMFILE_NAME)) - , m_constMediumFileNameFormat("lldb-mi-%s.log") - , m_strMediumFileName(MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH)) - , m_strMediumFileDirectory(".") - , m_fileNamePath(MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH)) - , m_eVerbosityType(CMICmnLog::eLogVerbosity_Log) - , m_strDate(CMIUtilDateTimeStd().GetDate()) - , m_fileHeaderTxt(MIRSRC(IDS_MEDIUMFILE_ERR_FILE_HEADER)) -{ -} - -//++ ------------------------------------------------------------------------------------ + : m_constThisMediumName(MIRSRC(IDS_MEDIUMFILE_NAME)), + m_constMediumFileNameFormat("lldb-mi-%s.log"), + m_strMediumFileName(MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH)), + m_strMediumFileDirectory("."), + m_fileNamePath(MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH)), + m_eVerbosityType(CMICmnLog::eLogVerbosity_Log), + m_strDate(CMIUtilDateTimeStd().GetDate()), + m_fileHeaderTxt(MIRSRC(IDS_MEDIUMFILE_ERR_FILE_HEADER)) {} + +//++ +//------------------------------------------------------------------------------------ // Details: CMICmnLogMediumFile destructor. // Type: Overridden. // Args: None. // Return: None. // Throws: None. //-- -CMICmnLogMediumFile::~CMICmnLogMediumFile() -{ -} +CMICmnLogMediumFile::~CMICmnLogMediumFile() {} -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Get the singleton instance of *this class. // Type: Static. // Args: None. // Return: CMICmnLogMediumFile - Reference to *this object. // Throws: None. //-- -CMICmnLogMediumFile & -CMICmnLogMediumFile::Instance() -{ - static CMICmnLogMediumFile instance; +CMICmnLogMediumFile &CMICmnLogMediumFile::Instance() { + static CMICmnLogMediumFile instance; - return instance; + return instance; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Initialize setup *this medium ready for use. // Type: Overridden. // Args: None. @@ -64,49 +62,49 @@ CMICmnLogMediumFile::Instance() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::Initialize() -{ - m_bInitialized = true; - return FileFormFileNamePath(); +bool CMICmnLogMediumFile::Initialize() { + m_bInitialized = true; + return FileFormFileNamePath(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Unbind detach or release resources used by *this medium. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- -bool -CMICmnLogMediumFile::Shutdown() -{ - if (m_bInitialized) - { - m_bInitialized = false; - m_file.Close(); - } - return MIstatus::success; +bool CMICmnLogMediumFile::Shutdown() { + if (m_bInitialized) { + m_bInitialized = false; + m_file.Close(); + } + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve the name of *this medium. // Type: Overridden. // Args: None. // Return: CMIUtilString - Text data. // Throws: None. //-- -const CMIUtilString & -CMICmnLogMediumFile::GetName() const -{ - return m_constThisMediumName; +const CMIUtilString &CMICmnLogMediumFile::GetName() const { + return m_constThisMediumName; } -//++ ------------------------------------------------------------------------------------ -// Details: The callee client calls the write function on the Logger. The data to be -// written is given out to all the mediums registered. The verbosity type parameter -// indicates to the medium the type of data or message given to it. The medium has -// modes of verbosity and depending on the verbosity set determines which data is +//++ +//------------------------------------------------------------------------------------ +// Details: The callee client calls the write function on the Logger. The data +// to be +// written is given out to all the mediums registered. The verbosity +// type parameter +// indicates to the medium the type of data or message given to it. The +// medium has +// modes of verbosity and depending on the verbosity set determines +// which data is // sent to the medium's output. // Type: Method. // Args: vData - (R) The data to write to the logger. @@ -115,43 +113,39 @@ CMICmnLogMediumFile::GetName() const // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::Write(const CMIUtilString &vData, const CMICmnLog::ELogVerbosity veType) -{ - if (m_bInitialized && m_file.IsOk()) - { - const bool bDoWrite = (m_eVerbosityType & veType); - if (bDoWrite) - { - bool bNewCreated = false; - bool bOk = m_file.CreateWrite(m_fileNamePath, bNewCreated); - if (bOk) - { - if (bNewCreated) - bOk = FileWriteHeader(); - bOk = bOk && FileWriteEnglish(MassagedData(vData, veType)); - } - return bOk; - } +bool CMICmnLogMediumFile::Write(const CMIUtilString &vData, + const CMICmnLog::ELogVerbosity veType) { + if (m_bInitialized && m_file.IsOk()) { + const bool bDoWrite = (m_eVerbosityType & veType); + if (bDoWrite) { + bool bNewCreated = false; + bool bOk = m_file.CreateWrite(m_fileNamePath, bNewCreated); + if (bOk) { + if (bNewCreated) + bOk = FileWriteHeader(); + bOk = bOk && FileWriteEnglish(MassagedData(vData, veType)); + } + return bOk; } + } - return MIstatus::failure; + return MIstatus::failure; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve *this medium's last error condition. // Type: Method. // Args: None. // Return: CString & - Text description. // Throws: None. //-- -const CMIUtilString & -CMICmnLogMediumFile::GetError() const -{ - return m_strMILastErrorDescription; +const CMIUtilString &CMICmnLogMediumFile::GetError() const { + return m_strMILastErrorDescription; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Set the verbosity mode for this medium. // Type: Method. // Args: veType - (R) Mask value. @@ -159,40 +153,35 @@ CMICmnLogMediumFile::GetError() const // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::SetVerbosity(const MIuint veType) -{ - m_eVerbosityType = veType; - return MIstatus::success; +bool CMICmnLogMediumFile::SetVerbosity(const MIuint veType) { + m_eVerbosityType = veType; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Get the verbosity mode for this medium. // Type: Method. // Args: veType - (R) Mask value. // Return: CMICmnLog::ELogVerbosity - Mask value. // Throws: None. //-- -MIuint -CMICmnLogMediumFile::GetVerbosity() const -{ - return m_eVerbosityType; -} +MIuint CMICmnLogMediumFile::GetVerbosity() const { return m_eVerbosityType; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Write data to a file English font. // Type: Method. // Args: vData - (R) The data to write to the logger. // Return: None. // Throws: None. //-- -bool -CMICmnLogMediumFile::FileWriteEnglish(const CMIUtilString &vData) -{ - return m_file.Write(vData); +bool CMICmnLogMediumFile::FileWriteEnglish(const CMIUtilString &vData) { + return m_file.Write(vData); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Determine and form the medium file's directory path and name. // Type: Method. // Args: None. @@ -200,55 +189,59 @@ CMICmnLogMediumFile::FileWriteEnglish(const CMIUtilString &vData) // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::FileFormFileNamePath() -{ - ClrErrorDescription(); +bool CMICmnLogMediumFile::FileFormFileNamePath() { + ClrErrorDescription(); - m_fileNamePath = MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH); + m_fileNamePath = MIRSRC(IDS_MEDIUMFILE_ERR_INVALID_PATH); - CMIUtilDateTimeStd date; - m_strMediumFileName = CMIUtilString::Format(m_constMediumFileNameFormat.c_str(), date.GetDateTimeLogFilename().c_str()); + CMIUtilDateTimeStd date; + m_strMediumFileName = + CMIUtilString::Format(m_constMediumFileNameFormat.c_str(), + date.GetDateTimeLogFilename().c_str()); #if defined(_MSC_VER) - m_fileNamePath = CMIUtilString::Format("%s\\%s", m_strMediumFileDirectory.c_str(), m_strMediumFileName.c_str()); + m_fileNamePath = CMIUtilString::Format( + "%s\\%s", m_strMediumFileDirectory.c_str(), m_strMediumFileName.c_str()); #else - m_fileNamePath = CMIUtilString::Format("%s/%s", m_strMediumFileDirectory.c_str(), m_strMediumFileName.c_str()); + m_fileNamePath = CMIUtilString::Format( + "%s/%s", m_strMediumFileDirectory.c_str(), m_strMediumFileName.c_str()); #endif // defined ( _MSC_VER ) - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve the medium file's directory path and name. // Type: Method. // Args: None. // Return: CMIUtilString & - File path. // Throws: None. //-- -const CMIUtilString & -CMICmnLogMediumFile::GetFileNamePath() const -{ - return m_fileNamePath; +const CMIUtilString &CMICmnLogMediumFile::GetFileNamePath() const { + return m_fileNamePath; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve the medium file's name. // Type: Method. // Args: None. // Return: CMIUtilString & - File name. // Throws: None. //-- -const CMIUtilString & -CMICmnLogMediumFile::GetFileName() const -{ - return m_strMediumFileName; +const CMIUtilString &CMICmnLogMediumFile::GetFileName() const { + return m_strMediumFileName; } -//++ ------------------------------------------------------------------------------------ -// Details: Massage the data to behave correct when submitted to file. Insert extra log -// specific text. The veType is there to allow in the future to parse the log and -// filter in out specific types of message to make viewing the log more manageable. +//++ +//------------------------------------------------------------------------------------ +// Details: Massage the data to behave correct when submitted to file. Insert +// extra log +// specific text. The veType is there to allow in the future to parse +// the log and +// filter in out specific types of message to make viewing the log more +// manageable. // Type: Method. // Args: vData - (R) Raw data. // veType - (R) Message type. @@ -256,58 +249,58 @@ CMICmnLogMediumFile::GetFileName() const // Throws: None. //-- CMIUtilString -CMICmnLogMediumFile::MassagedData(const CMIUtilString &vData, const CMICmnLog::ELogVerbosity veType) -{ - const CMIUtilString strCr("\n"); - CMIUtilString data; - const char verbosityCode(ConvertLogVerbosityTypeToId(veType)); - const CMIUtilString dt(CMIUtilString::Format("%s %s", m_strDate.c_str(), m_dateTime.GetTime().c_str())); - - data = CMIUtilString::Format("%c,%s,%s", verbosityCode, dt.c_str(), vData.c_str()); - data = ConvertCr(data); - - // Look for EOL... - const size_t pos = vData.rfind(strCr); - if (pos == vData.size()) - return data; +CMICmnLogMediumFile::MassagedData(const CMIUtilString &vData, + const CMICmnLog::ELogVerbosity veType) { + const CMIUtilString strCr("\n"); + CMIUtilString data; + const char verbosityCode(ConvertLogVerbosityTypeToId(veType)); + const CMIUtilString dt(CMIUtilString::Format("%s %s", m_strDate.c_str(), + m_dateTime.GetTime().c_str())); + + data = CMIUtilString::Format("%c,%s,%s", verbosityCode, dt.c_str(), + vData.c_str()); + data = ConvertCr(data); + + // Look for EOL... + const size_t pos = vData.rfind(strCr); + if (pos == vData.size()) + return data; - // ... did not have an EOL so add one - data += GetLineReturn(); + // ... did not have an EOL so add one + data += GetLineReturn(); - return data; + return data; } -//++ ------------------------------------------------------------------------------------ -// Details: Convert the Log's verbosity type number into a single char character. +//++ +//------------------------------------------------------------------------------------ +// Details: Convert the Log's verbosity type number into a single char +// character. // Type: Method. // Args: veType - (R) Message type. // Return: wchar_t - A letter. // Throws: None. //-- -char -CMICmnLogMediumFile::ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity veType) const -{ - char c = 0; - if (veType != 0) - { - MIuint cnt = 0; - MIuint number(veType); - while (1 != number) - { - number = number >> 1; - ++cnt; - } - c = 'A' + cnt; - } - else - { - c = '*'; +char CMICmnLogMediumFile::ConvertLogVerbosityTypeToId( + const CMICmnLog::ELogVerbosity veType) const { + char c = 0; + if (veType != 0) { + MIuint cnt = 0; + MIuint number(veType); + while (1 != number) { + number = number >> 1; + ++cnt; } + c = 'A' + cnt; + } else { + c = '*'; + } - return c; + return c; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve state of whether the file medium is ok. // Type: Method. // Args: None. @@ -315,13 +308,10 @@ CMICmnLogMediumFile::ConvertLogVerbosityTypeToId(const CMICmnLog::ELogVerbosity // False - file has a problem. // Throws: None. //-- -bool -CMICmnLogMediumFile::IsOk() const -{ - return m_file.IsOk(); -} +bool CMICmnLogMediumFile::IsOk() const { return m_file.IsOk(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Status on the file log medium existing already. // Type: Method. // Args: None. @@ -329,13 +319,12 @@ CMICmnLogMediumFile::IsOk() const // False - Not found. // Throws: None. //-- -bool -CMICmnLogMediumFile::IsFileExist() const -{ - return m_file.IsFileExist(GetFileNamePath()); +bool CMICmnLogMediumFile::IsFileExist() const { + return m_file.IsFileExist(GetFileNamePath()); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Write the header text the logger file. // Type: Method. // Args: vText - (R) Text. @@ -343,72 +332,69 @@ CMICmnLogMediumFile::IsFileExist() const // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::FileWriteHeader() -{ - return FileWriteEnglish(ConvertCr(m_fileHeaderTxt)); +bool CMICmnLogMediumFile::FileWriteHeader() { + return FileWriteEnglish(ConvertCr(m_fileHeaderTxt)); } -//++ ------------------------------------------------------------------------------------ -// Details: Convert any carriage line returns to be compatible with the platform the +//++ +//------------------------------------------------------------------------------------ +// Details: Convert any carriage line returns to be compatible with the platform +// the // Log file is being written to. // Type: Method. // Args: vData - (R) Text data. // Return: CMIUtilString - Converted string data. // Throws: None. //-- -CMIUtilString -CMICmnLogMediumFile::ConvertCr(const CMIUtilString &vData) const -{ - const CMIUtilString strCr("\n"); - const CMIUtilString &rCrCmpat(GetLineReturn()); - - if (strCr == rCrCmpat) - return vData; - - const size_t nSizeCmpat(rCrCmpat.size()); - const size_t nSize(strCr.size()); - CMIUtilString strConv(vData); - size_t pos = strConv.find(strCr); - while (pos != CMIUtilString::npos) - { - strConv.replace(pos, nSize, rCrCmpat); - pos = strConv.find(strCr, pos + nSizeCmpat); - } - - return strConv; +CMIUtilString CMICmnLogMediumFile::ConvertCr(const CMIUtilString &vData) const { + const CMIUtilString strCr("\n"); + const CMIUtilString &rCrCmpat(GetLineReturn()); + + if (strCr == rCrCmpat) + return vData; + + const size_t nSizeCmpat(rCrCmpat.size()); + const size_t nSize(strCr.size()); + CMIUtilString strConv(vData); + size_t pos = strConv.find(strCr); + while (pos != CMIUtilString::npos) { + strConv.replace(pos, nSize, rCrCmpat); + pos = strConv.find(strCr, pos + nSizeCmpat); + } + + return strConv; } -//++ ------------------------------------------------------------------------------------ -// Details: Set the header text that is written to the logger file at the beginning. +//++ +//------------------------------------------------------------------------------------ +// Details: Set the header text that is written to the logger file at the +// beginning. // Type: Method. // Args: vText - (R) Text. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::SetHeaderTxt(const CMIUtilString &vText) -{ - m_fileHeaderTxt = vText; +bool CMICmnLogMediumFile::SetHeaderTxt(const CMIUtilString &vText) { + m_fileHeaderTxt = vText; - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Retrieve the file current carriage line return characters used. // Type: Method. // Args: None. // Return: CMIUtilString & - Text. // Throws: None. //-- -const CMIUtilString & -CMICmnLogMediumFile::GetLineReturn() const -{ - return m_file.GetLineReturn(); +const CMIUtilString &CMICmnLogMediumFile::GetLineReturn() const { + return m_file.GetLineReturn(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Set the directory to place the log file. // Type: Method. // Args: vPath - (R) Path to log. @@ -416,10 +402,8 @@ CMICmnLogMediumFile::GetLineReturn() const // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmnLogMediumFile::SetDirectory(const CMIUtilString &vPath) -{ - m_strMediumFileDirectory = vPath; +bool CMICmnLogMediumFile::SetDirectory(const CMIUtilString &vPath) { + m_strMediumFileDirectory = vPath; - return FileFormFileNamePath(); + return FileFormFileNamePath(); } |