aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmnMIResultRecord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmnMIResultRecord.cpp')
-rw-r--r--tools/lldb-mi/MICmnMIResultRecord.cpp142
1 files changed, 142 insertions, 0 deletions
diff --git a/tools/lldb-mi/MICmnMIResultRecord.cpp b/tools/lldb-mi/MICmnMIResultRecord.cpp
new file mode 100644
index 000000000000..195167981d8c
--- /dev/null
+++ b/tools/lldb-mi/MICmnMIResultRecord.cpp
@@ -0,0 +1,142 @@
+//===-- Platform.cpp --------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//++
+// File: MICmnMIResultRecord.h
+//
+// Overview: CMICmnMIResultRecord implementation.
+//
+// Environment: Compilers: Visual C++ 12.
+// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+// Libraries: See MIReadmetxt.
+//
+// Copyright: None.
+//--
+
+// In-house headers:
+#include "MICmnMIResultRecord.h"
+#include "MICmnResources.h"
+
+// Instantiations:
+CMICmnMIResultRecord::MapResultClassToResultClassText_t ms_MapResultClassToResultClassText =
+{
+ { CMICmnMIResultRecord::eResultClass_Done, "done" },
+ { CMICmnMIResultRecord::eResultClass_Running, "running" },
+ { CMICmnMIResultRecord::eResultClass_Connected, "connected" },
+ { CMICmnMIResultRecord::eResultClass_Error, "error" },
+ { CMICmnMIResultRecord::eResultClass_Exit, "exit" }
+};
+const CMIUtilString CMICmnMIResultRecord::ms_constStrResultRecordHat( "^");
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMICmnMIResultRecord constructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMICmnMIResultRecord::CMICmnMIResultRecord( void )
+: m_strResultRecord( MIRSRC( IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION ) )
+{
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMICmnMIResultRecord constructor.
+// Type: Method.
+// Args: vrToken - (R) The command's transaction ID or token.
+// veType - (R) A MI result class enumeration.
+// Return: None.
+// Throws: None.
+//--
+CMICmnMIResultRecord::CMICmnMIResultRecord( const CMIUtilString & vrToken, const ResultClass_e veType )
+: m_strResultRecordToken( vrToken )
+, m_eResultRecordResultClass( veType )
+, m_strResultRecord( MIRSRC( IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION ) )
+{
+ BuildResultRecord();
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMICmnMIResultRecord constructor.
+// Type: Method.
+// Args: vrToken - (R) The command's transaction ID or token.
+// veType - (R) A MI result class enumeration.
+// vMIResult - (R) A MI result object.
+// Return: None.
+// Throws: None.
+//--
+CMICmnMIResultRecord::CMICmnMIResultRecord( const CMIUtilString & vrToken, const ResultClass_e veType, const CMICmnMIValueResult & vValue )
+: m_strResultRecordToken( vrToken )
+, m_eResultRecordResultClass( veType )
+, m_strResultRecord( MIRSRC( IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION ) )
+, m_partResult( vValue )
+{
+ BuildResultRecord();
+ Add( m_partResult );
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMICmnMIResultRecord destructor.
+// Type: Overrideable.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMICmnMIResultRecord::~CMICmnMIResultRecord( void )
+{
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: Return the MI result record as a string. The string is a direct result of
+// work done on *this result record so if not enough data is added then it is
+// possible to return a malformed result record. If nothing has been set or
+// added to *this MI result record object then text "<Invalid>" will be returned.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString & - MI output text.
+// Throws: None.
+//--
+const CMIUtilString & CMICmnMIResultRecord::GetString( void ) const
+{
+ return m_strResultRecord;
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: Build the result record's mandatory data part. The part up to the first
+// (additional) result i.e. result-record ==> [ token ] "^" result-class.
+// Type: Method.
+// Args: None.
+// Return: MIstatus::success - Functional succeeded.
+// MIstatus::failure - Functional failed.
+// Throws: None.
+//--
+bool CMICmnMIResultRecord::BuildResultRecord( void )
+{
+ const MIchar * pFormat = "%s%s%s";
+ const CMIUtilString & rStrResultRecord( ms_MapResultClassToResultClassText[ m_eResultRecordResultClass ] );
+ m_strResultRecord = CMIUtilString::Format( pFormat, m_strResultRecordToken.c_str(), ms_constStrResultRecordHat.c_str(), rStrResultRecord.c_str() );
+
+ return MIstatus::success;
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: Add to *this result record additional information.
+// Type: Method.
+// Args: vMIValue - (R) A MI value derived object.
+// Return: MIstatus::success - Functional succeeded.
+// MIstatus::failure - Functional failed.
+// Throws: None.
+//--
+bool CMICmnMIResultRecord::Add( const CMICmnMIValue & vMIValue )
+{
+ m_strResultRecord += ",";
+ m_strResultRecord += vMIValue.GetString();
+
+ return MIstatus::success;
+}