]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmnMIResultRecord.cpp
Merge the grammar fix for lib/libc/gen/raise_test:raise_stress
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmnMIResultRecord.cpp
1 //===-- MICmnMIResultRecord.cpp ---------------------------------*- 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 // Third Party Headers:
11 #include <assert.h>
12
13 // In-house headers:
14 #include "MICmnMIResultRecord.h"
15 #include "MICmnResources.h"
16
17 //++ ------------------------------------------------------------------------------------
18 // Details: Map a result class to the corresponding string.
19 // Args:    veType      - (R) A MI result class enumeration.
20 // Return:  const char* - The string corresponding to the result class.
21 // Throws:  None.
22 //--
23 static const char*
24 MapResultClassToResultClassText(CMICmnMIResultRecord::ResultClass_e veType)
25 {
26     switch (veType)
27     {
28       case CMICmnMIResultRecord::eResultClass_Done:
29         return "done";
30       case CMICmnMIResultRecord::eResultClass_Running:
31         return "running";
32       case CMICmnMIResultRecord::eResultClass_Connected:
33         return "connected";
34       case CMICmnMIResultRecord::eResultClass_Error:
35         return "error";
36       case CMICmnMIResultRecord::eResultClass_Exit:
37         return "exit";
38     }
39     assert(false && "unknown CMICmnMIResultRecord::ResultClass_e");
40     return NULL;
41 }
42
43 //++ ------------------------------------------------------------------------------------
44 // Details: Build the result record's mandatory data part. The part up to the first
45 //          (additional) result i.e. result-record ==>  [ token ] "^" result-class.
46 // Args:    vrToken     - (R) The command's transaction ID or token.
47 //          veType      - (R) A MI result class enumeration.
48 // Return:  CMIUtilString & - MI result record mandatory data
49 // Throws:  None.
50 //--
51 static const CMIUtilString
52 BuildResultRecord(const CMIUtilString &vrToken, CMICmnMIResultRecord::ResultClass_e veType)
53 {
54     const char *pStrResultRecord = MapResultClassToResultClassText(veType);
55     return CMIUtilString::Format("%s^%s", vrToken.c_str(), pStrResultRecord);
56 }
57
58 //++ ------------------------------------------------------------------------------------
59 // Details: CMICmnMIResultRecord constructor.
60 // Type:    Method.
61 // Args:    None.
62 // Return:  None.
63 // Throws:  None.
64 //--
65 CMICmnMIResultRecord::CMICmnMIResultRecord()
66     : m_strResultRecord(MIRSRC(IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION))
67 {
68 }
69
70 //++ ------------------------------------------------------------------------------------
71 // Details: CMICmnMIResultRecord constructor.
72 // Type:    Method.
73 // Args:    vrToken - (R) The command's transaction ID or token.
74 //          veType  - (R) A MI result class enumeration.
75 // Return:  None.
76 // Throws:  None.
77 //--
78 CMICmnMIResultRecord::CMICmnMIResultRecord(const CMIUtilString &vrToken, ResultClass_e veType)
79     : m_strResultRecord(BuildResultRecord(vrToken, veType))
80 {
81 }
82
83 //++ ------------------------------------------------------------------------------------
84 // Details: CMICmnMIResultRecord constructor.
85 // Type:    Method.
86 // Args:    vrToken     - (R) The command's transaction ID or token.
87 //          veType      - (R) A MI result class enumeration.
88 //          vMIResult   - (R) A MI result object.
89 // Return:  None.
90 // Throws:  None.
91 //--
92 CMICmnMIResultRecord::CMICmnMIResultRecord(const CMIUtilString &vrToken, ResultClass_e veType, const CMICmnMIValueResult &vValue)
93     : m_strResultRecord(BuildResultRecord(vrToken, veType))
94 {
95     Add(vValue);
96 }
97
98 //++ ------------------------------------------------------------------------------------
99 // Details: CMICmnMIResultRecord destructor.
100 // Type:    Overrideable.
101 // Args:    None.
102 // Return:  None.
103 // Throws:  None.
104 //--
105 CMICmnMIResultRecord::~CMICmnMIResultRecord()
106 {
107 }
108
109 //++ ------------------------------------------------------------------------------------
110 // Details: Return the MI result record as a string. The string is a direct result of
111 //          work done on *this result record so if not enough data is added then it is
112 //          possible to return a malformed result record. If nothing has been set or
113 //          added to *this MI result record object then text "<Invalid>" will be returned.
114 // Type:    Method.
115 // Args:    None.
116 // Return:  CMIUtilString & - MI output text.
117 // Throws:  None.
118 //--
119 const CMIUtilString &
120 CMICmnMIResultRecord::GetString() const
121 {
122     return m_strResultRecord;
123 }
124
125 //++ ------------------------------------------------------------------------------------
126 // Details: Add to *this result record additional information.
127 // Type:    Method.
128 // Args:    vMIValue    - (R) A MI value derived object.
129 // Return:  None.
130 // Throws:  None.
131 //--
132 void
133 CMICmnMIResultRecord::Add(const CMICmnMIValue &vMIValue)
134 {
135     m_strResultRecord += ",";
136     m_strResultRecord += vMIValue.GetString();
137 }