1 //===-- MICmnMIOutOfBandRecord.cpp ------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // Third Party Headers:
14 #include "MICmnMIOutOfBandRecord.h"
15 #include "MICmnResources.h"
19 MapOutOfBandToText(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
21 case CMICmnMIOutOfBandRecord::eOutOfBand_Running:
23 case CMICmnMIOutOfBandRecord::eOutOfBand_Stopped:
25 case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointCreated:
26 return "breakpoint-created";
27 case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointModified:
28 return "breakpoint-modified";
29 case CMICmnMIOutOfBandRecord::eOutOfBand_Thread:
30 return ""; // "" Meant to be empty
31 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupAdded:
32 return "thread-group-added";
33 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupExited:
34 return "thread-group-exited";
35 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupRemoved:
36 return "thread-group-removed";
37 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted:
38 return "thread-group-started";
39 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadCreated:
40 return "thread-created";
41 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadExited:
42 return "thread-exited";
43 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadSelected:
44 return "thread-selected";
45 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleLoaded:
46 return "library-loaded";
47 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleUnloaded:
48 return "library-unloaded";
49 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetStreamOutput:
51 case CMICmnMIOutOfBandRecord::eOutOfBand_ConsoleStreamOutput:
53 case CMICmnMIOutOfBandRecord::eOutOfBand_LogStreamOutput:
56 assert(false && "unknown CMICmnMIOutofBandRecord::OutOfBand_e");
61 MapOutOfBandToToken(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
63 case CMICmnMIOutOfBandRecord::eOutOfBand_Running:
65 case CMICmnMIOutOfBandRecord::eOutOfBand_Stopped:
67 case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointCreated:
69 case CMICmnMIOutOfBandRecord::eOutOfBand_BreakPointModified:
71 case CMICmnMIOutOfBandRecord::eOutOfBand_Thread:
73 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupAdded:
75 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupExited:
77 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupRemoved:
79 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted:
81 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadCreated:
83 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadExited:
85 case CMICmnMIOutOfBandRecord::eOutOfBand_ThreadSelected:
87 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleLoaded:
89 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetModuleUnloaded:
91 case CMICmnMIOutOfBandRecord::eOutOfBand_TargetStreamOutput:
93 case CMICmnMIOutOfBandRecord::eOutOfBand_ConsoleStreamOutput:
95 case CMICmnMIOutOfBandRecord::eOutOfBand_LogStreamOutput:
98 assert(false && "unknown CMICmnMIOutofBandRecord::OutOfBand_e");
103 //------------------------------------------------------------------------------------
104 // Details: Build the Out-of-band record's mandatory data part. The part up to
106 // (additional) result i.e. async-record ==> "*" type.
107 // Args: veType - (R) A MI Out-of-Band enumeration.
108 // Return: CMIUtilString - The async record text.
112 BuildAsyncRecord(CMICmnMIOutOfBandRecord::OutOfBand_e veType) {
113 return CMIUtilString::Format("%s%s", MapOutOfBandToToken(veType),
114 MapOutOfBandToText(veType));
118 //------------------------------------------------------------------------------------
119 // Details: CMICmnMIOutOfBandRecord constructor.
125 CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord()
126 : m_strAsyncRecord(MIRSRC(IDS_CMD_ERR_EVENT_HANDLED_BUT_NO_ACTION)) {}
129 //------------------------------------------------------------------------------------
130 // Details: CMICmnMIOutOfBandRecord constructor.
132 // Args: veType - (R) A MI Out-of-Bound enumeration.
136 CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(OutOfBand_e veType)
137 : m_strAsyncRecord(BuildAsyncRecord(veType)) {}
140 //------------------------------------------------------------------------------------
141 // Details: CMICmnMIOutOfBandRecord constructor.
143 // Args: veType - (R) A MI Out-of-Bound enumeration.
144 // vConst - (R) A MI const object.
148 CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(
149 OutOfBand_e veType, const CMICmnMIValueConst &vConst)
150 : m_strAsyncRecord(BuildAsyncRecord(veType)) {
151 m_strAsyncRecord += vConst.GetString();
155 //------------------------------------------------------------------------------------
156 // Details: CMICmnMIOutOfBandRecord constructor.
158 // Args: veType - (R) A MI Out-of-Bound enumeration.
159 // vResult - (R) A MI result object.
163 CMICmnMIOutOfBandRecord::CMICmnMIOutOfBandRecord(
164 OutOfBand_e veType, const CMICmnMIValueResult &vResult)
165 : m_strAsyncRecord(BuildAsyncRecord(veType)) {
170 //------------------------------------------------------------------------------------
171 // Details: CMICmnMIOutOfBandRecord destructor.
172 // Type: Overrideable.
177 CMICmnMIOutOfBandRecord::~CMICmnMIOutOfBandRecord() {}
180 //------------------------------------------------------------------------------------
181 // Details: Return the MI Out-of-band record as a string. The string is a direct
183 // work done on *this Out-of-band record so if not enough data is added
185 // possible to return a malformed Out-of-band record. If nothing has
187 // added to *this MI Out-of-band record object then text "<Invalid>"
191 // Return: CMIUtilString & - MI output text.
194 const CMIUtilString &CMICmnMIOutOfBandRecord::GetString() const {
195 return m_strAsyncRecord;
199 //------------------------------------------------------------------------------------
200 // Details: Add to *this Out-of-band record additional information.
202 // Args: vResult - (R) A MI result object.
206 void CMICmnMIOutOfBandRecord::Add(const CMICmnMIValueResult &vResult) {
207 m_strAsyncRecord += ",";
208 m_strAsyncRecord += vResult.GetString();