blob: 6de904a9c60759aaba98522883c8beb6d77ddb6c [file] [log] [blame]
Deepak Panickal6f9c4682014-05-16 10:51:01 +00001//===-- Platform.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
Deepak Panickal6f9c4682014-05-16 10:51:01 +000010// In-house headers:
11#include "MICmnMIValueResult.h"
12#include "MICmnResources.h"
13
14// Instantiations:
Zachary Turner1d6af022014-11-17 18:06:21 +000015const CMIUtilString CMICmnMIValueResult::ms_constStrEqual("=");
Deepak Panickal6f9c4682014-05-16 10:51:01 +000016
17//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000018// Details: CMICmnMIValueResult constructor.
19// Type: Method.
20// Args: None.
21// Return: None.
22// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000023//--
Zachary Turner1d6af022014-11-17 18:06:21 +000024CMICmnMIValueResult::CMICmnMIValueResult(void)
25 : m_bEmptyConstruction(true)
Deepak Panickal6f9c4682014-05-16 10:51:01 +000026{
27}
28
29//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000030// Details: CMICmnMIValueResult constructor.
31// Type: Method.
32// Args: vrVariable - (R) MI value's name.
33// vrValue - (R) The MI value.
34// Return: None.
35// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000036//--
Zachary Turner1d6af022014-11-17 18:06:21 +000037CMICmnMIValueResult::CMICmnMIValueResult(const CMIUtilString &vrVariable, const CMICmnMIValue &vrValue)
38 : m_strPartVariable(vrVariable)
39 , m_partMIValue(vrValue)
40 , m_bEmptyConstruction(false)
41 , m_bUseSpacing(false)
Deepak Panickal6f9c4682014-05-16 10:51:01 +000042{
Zachary Turner1d6af022014-11-17 18:06:21 +000043 BuildResult();
Deepak Panickal6f9c4682014-05-16 10:51:01 +000044}
45
46//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000047// Details: CMICmnMIValueResult constructor.
48// Type: Method.
49// Args: vrVariable - (R) MI value's name.
50// vrValue - (R) The MI value.
Bruce Mitchenercb300792015-07-03 03:54:17 +000051// vbUseSpacing - (R) True = put space separators into the string, false = no spaces used.
Zachary Turner1d6af022014-11-17 18:06:21 +000052// Return: None.
53// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000054//--
Zachary Turner1d6af022014-11-17 18:06:21 +000055CMICmnMIValueResult::CMICmnMIValueResult(const CMIUtilString &vrVariable, const CMICmnMIValue &vrValue, const bool vbUseSpacing)
56 : m_strPartVariable(vrVariable)
57 , m_partMIValue(vrValue)
58 , m_bEmptyConstruction(false)
59 , m_bUseSpacing(vbUseSpacing)
Deepak Panickal6f9c4682014-05-16 10:51:01 +000060{
Zachary Turner1d6af022014-11-17 18:06:21 +000061 BuildResult();
Deepak Panickal6f9c4682014-05-16 10:51:01 +000062}
63
64//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000065// Details: CMICmnMIValueResult destructor.
66// Type: Overrideable.
67// Args: None.
68// Return: None.
69// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000070//--
Zachary Turner1d6af022014-11-17 18:06:21 +000071CMICmnMIValueResult::~CMICmnMIValueResult(void)
Deepak Panickal6f9c4682014-05-16 10:51:01 +000072{
73}
74
75//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000076// Details: Build the MI value result string.
77// Type: Method.
78// Args: None.
79// Return: MIstatus::success - Functional succeeded.
80// MIstatus::failure - Functional failed.
81// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000082//--
Zachary Turner1d6af022014-11-17 18:06:21 +000083bool
84CMICmnMIValueResult::BuildResult(void)
Deepak Panickal6f9c4682014-05-16 10:51:01 +000085{
Zachary Turner1d6af022014-11-17 18:06:21 +000086 const MIchar *pFormat = m_bUseSpacing ? "%s %s %s" : "%s%s%s";
87 m_strValue = CMIUtilString::Format(pFormat, m_strPartVariable.c_str(), ms_constStrEqual.c_str(), m_partMIValue.GetString().c_str());
Deepak Panickal6f9c4682014-05-16 10:51:01 +000088
Zachary Turner1d6af022014-11-17 18:06:21 +000089 return MIstatus::success;
Deepak Panickal6f9c4682014-05-16 10:51:01 +000090}
91
92//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000093// Details: Build the MI value result string.
94// Type: Method.
95// Args: vrVariable - (R) MI value's name.
96// vrValue - (R) The MI value.
97// Return: MIstatus::success - Functional succeeded.
98// MIstatus::failure - Functional failed.
99// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000100//--
Zachary Turner1d6af022014-11-17 18:06:21 +0000101bool
102CMICmnMIValueResult::BuildResult(const CMIUtilString &vVariable, const CMICmnMIValue &vValue)
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000103{
Zachary Turner1d6af022014-11-17 18:06:21 +0000104 const MIchar *pFormat = m_bUseSpacing ? "%s, %s %s %s" : "%s,%s%s%s";
105 m_strValue =
106 CMIUtilString::Format(pFormat, m_strValue.c_str(), vVariable.c_str(), ms_constStrEqual.c_str(), vValue.GetString().c_str());
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000107
Zachary Turner1d6af022014-11-17 18:06:21 +0000108 return MIstatus::success;
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000109}
110
111//++ ------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +0000112// Details: Append another MI value object to *this MI value result.
113// Type: Method.
114// Args: vrVariable - (R) MI value's name.
115// vrValue - (R) The MI value.
116// Return: MIstatus::success - Functional succeeded.
117// MIstatus::failure - Functional failed.
118// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000119//--
Zachary Turner1d6af022014-11-17 18:06:21 +0000120bool
121CMICmnMIValueResult::Add(const CMIUtilString &vrVariable, const CMICmnMIValue &vrValue)
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000122{
Zachary Turner1d6af022014-11-17 18:06:21 +0000123 if (!m_bEmptyConstruction)
124 return BuildResult(vrVariable, vrValue);
125 else
126 {
127 m_bEmptyConstruction = false;
128 m_strPartVariable = vrVariable;
129 m_partMIValue = vrValue;
130 return BuildResult();
131 }
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000132}