A lot of comments in LLDB are surrounded by an ASCII line to delimit the begging and end of the comment. Its use is not really consistent across the code base, sometimes the lines are longer, sometimes they are shorter and sometimes they are omitted. Furthermore, it looks kind of weird with the 80 column limit, where the comment actually extends past the line, but not by much. Furthermore, when /// is used for Doxygen comments, it looks particularly odd. And when // is used, it incorrectly gives the impression that it's actually a Doxygen comment. I assume these lines were added to improve distinguishing between comments and code. However, given that todays editors and IDEs do a great job at highlighting comments, I think it's worth to drop this for the sake of consistency. The alternative is fixing all the inconsistencies, which would create a lot more churn. Differential revision: https://reviews.llvm.org/D60508 llvm-svn: 358135
574 lines
17 KiB
C++
574 lines
17 KiB
C++
//===-- MICmnLLDBDebugSessionInfoVarObj.cpp ---------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// In-house headers:
|
|
#include "MICmnLLDBDebugSessionInfoVarObj.h"
|
|
#include "MICmnLLDBProxySBValue.h"
|
|
#include "MICmnLLDBUtilSBValue.h"
|
|
|
|
// Instantiations:
|
|
const char *CMICmnLLDBDebugSessionInfoVarObj::ms_aVarFormatStrings[] = {
|
|
// CODETAG_SESSIONINFO_VARFORMAT_ENUM
|
|
// *** Order is import here.
|
|
"<Invalid var format>", "binary", "octal", "decimal",
|
|
"hexadecimal", "natural"};
|
|
const char *CMICmnLLDBDebugSessionInfoVarObj::ms_aVarFormatChars[] = {
|
|
// CODETAG_SESSIONINFO_VARFORMAT_ENUM
|
|
// *** Order is import here.
|
|
"<Invalid var format>", "t", "o", "d", "x", "N"};
|
|
CMICmnLLDBDebugSessionInfoVarObj::MapKeyToVarObj_t
|
|
CMICmnLLDBDebugSessionInfoVarObj::ms_mapVarIdToVarObj;
|
|
MIuint CMICmnLLDBDebugSessionInfoVarObj::ms_nVarUniqueId = 0; // Index from 0
|
|
CMICmnLLDBDebugSessionInfoVarObj::varFormat_e
|
|
CMICmnLLDBDebugSessionInfoVarObj::ms_eDefaultFormat = eVarFormat_Natural;
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj constructor.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj()
|
|
: m_eVarFormat(eVarFormat_Natural), m_eVarType(eVarType_Internal) {
|
|
// Do not call UpdateValue() in here as not necessary
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj constructor.
|
|
// Type: Method.
|
|
// Args: vrStrNameReal - (R) The actual name of the variable, the
|
|
// expression.
|
|
// vrStrName - (R) The name given for *this var object.
|
|
// vrValue - (R) The LLDB SBValue object represented by *this
|
|
// object.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(
|
|
const CMIUtilString &vrStrNameReal, const CMIUtilString &vrStrName,
|
|
const lldb::SBValue &vrValue)
|
|
: m_eVarFormat(eVarFormat_Natural), m_eVarType(eVarType_Internal),
|
|
m_strName(vrStrName), m_SBValue(vrValue), m_strNameReal(vrStrNameReal) {
|
|
UpdateValue();
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj constructor.
|
|
// Type: Method.
|
|
// Args: vrStrNameReal - (R) The actual name of the variable, the
|
|
// expression.
|
|
// vrStrName - (R) The name given for *this var object.
|
|
// vrValue - (R) The LLDB SBValue object represented by
|
|
// *this object.
|
|
// vrStrVarObjParentName - (R) The var object parent to *this var
|
|
// object (LLDB SBValue equivalent).
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(
|
|
const CMIUtilString &vrStrNameReal, const CMIUtilString &vrStrName,
|
|
const lldb::SBValue &vrValue, const CMIUtilString &vrStrVarObjParentName)
|
|
: m_eVarFormat(eVarFormat_Natural), m_eVarType(eVarType_Internal),
|
|
m_strName(vrStrName), m_SBValue(vrValue), m_strNameReal(vrStrNameReal),
|
|
m_strVarObjParentName(vrStrVarObjParentName) {
|
|
UpdateValue();
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj copy constructor.
|
|
// Type: Method.
|
|
// Args: vrOther - (R) The object to copy from.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(
|
|
const CMICmnLLDBDebugSessionInfoVarObj &vrOther) {
|
|
CopyOther(vrOther);
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj copy constructor.
|
|
// Type: Method.
|
|
// Args: vrOther - (R) The object to copy from.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(
|
|
CMICmnLLDBDebugSessionInfoVarObj &vrOther) {
|
|
CopyOther(vrOther);
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj move constructor.
|
|
// Type: Method.
|
|
// Args: vrwOther - (R) The object to copy from.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(
|
|
CMICmnLLDBDebugSessionInfoVarObj &&vrwOther) {
|
|
MoveOther(vrwOther);
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj assignment operator.
|
|
// Type: Method.
|
|
// Args: vrOther - (R) The object to copy from.
|
|
// Return: CMICmnLLDBDebugSessionInfoVarObj & - Updated *this object.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj &CMICmnLLDBDebugSessionInfoVarObj::
|
|
operator=(const CMICmnLLDBDebugSessionInfoVarObj &vrOther) {
|
|
CopyOther(vrOther);
|
|
|
|
return *this;
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj assignment operator.
|
|
// Type: Method.
|
|
// Args: vrwOther - (R) The object to copy from.
|
|
// Return: CMICmnLLDBDebugSessionInfoVarObj & - Updated *this object.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj &CMICmnLLDBDebugSessionInfoVarObj::
|
|
operator=(CMICmnLLDBDebugSessionInfoVarObj &&vrwOther) {
|
|
MoveOther(vrwOther);
|
|
|
|
return *this;
|
|
}
|
|
|
|
//++
|
|
// Details: Copy the other instance of that object to *this object.
|
|
// Type: Method.
|
|
// Args: vrOther - (R) The object to copy from.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmnLLDBDebugSessionInfoVarObj::CopyOther(
|
|
const CMICmnLLDBDebugSessionInfoVarObj &vrOther) {
|
|
// Check for self-assignment
|
|
if (this == &vrOther)
|
|
return MIstatus::success;
|
|
|
|
m_eVarFormat = vrOther.m_eVarFormat;
|
|
m_eVarType = vrOther.m_eVarType;
|
|
m_strName = vrOther.m_strName;
|
|
m_SBValue = vrOther.m_SBValue;
|
|
m_strNameReal = vrOther.m_strNameReal;
|
|
m_strFormattedValue = vrOther.m_strFormattedValue;
|
|
m_strVarObjParentName = vrOther.m_strVarObjParentName;
|
|
|
|
return MIstatus::success;
|
|
}
|
|
|
|
//++
|
|
// Details: Move that object to *this object.
|
|
// Type: Method.
|
|
// Args: vrwOther - (RW) The object to copy from.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmnLLDBDebugSessionInfoVarObj::MoveOther(
|
|
CMICmnLLDBDebugSessionInfoVarObj &vrwOther) {
|
|
// Check for self-assignment
|
|
if (this == &vrwOther)
|
|
return MIstatus::success;
|
|
|
|
CopyOther(vrwOther);
|
|
vrwOther.m_eVarFormat = eVarFormat_Natural;
|
|
vrwOther.m_eVarType = eVarType_Internal;
|
|
vrwOther.m_strName.clear();
|
|
vrwOther.m_SBValue.Clear();
|
|
vrwOther.m_strNameReal.clear();
|
|
vrwOther.m_strFormattedValue.clear();
|
|
vrwOther.m_strVarObjParentName.clear();
|
|
|
|
return MIstatus::success;
|
|
}
|
|
|
|
//++
|
|
// Details: CMICmnLLDBDebugSessionInfoVarObj destructor.
|
|
// Type: Overridden.
|
|
// Args: None.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::~CMICmnLLDBDebugSessionInfoVarObj() {}
|
|
|
|
//++
|
|
// Details: Retrieve the var format enumeration for the specified string.
|
|
// Type: Static method.
|
|
// Args: vrStrFormat - (R) Text description of the var format.
|
|
// Return: varFormat_e - Var format enumeration.
|
|
// - No match found return eVarFormat_Invalid.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::varFormat_e
|
|
CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForString(
|
|
const CMIUtilString &vrStrFormat) {
|
|
// CODETAG_SESSIONINFO_VARFORMAT_ENUM
|
|
for (MIuint i = 0; i < eVarFormat_count; i++) {
|
|
const char *pVarFormatString = ms_aVarFormatStrings[i];
|
|
if (vrStrFormat == pVarFormatString)
|
|
return static_cast<varFormat_e>(i);
|
|
}
|
|
|
|
return eVarFormat_Invalid;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the var format enumeration for the specified character.
|
|
// Type: Static method.
|
|
// Args: vcFormat - Character representing the var format.
|
|
// Return: varFormat_e - Var format enumeration.
|
|
// - No match found return eVarFormat_Invalid.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::varFormat_e
|
|
CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForChar(char vcFormat) {
|
|
if ('r' == vcFormat)
|
|
return eVarFormat_Hex;
|
|
|
|
// CODETAG_SESSIONINFO_VARFORMAT_ENUM
|
|
for (MIuint i = 0; i < eVarFormat_count; i++) {
|
|
const char *pVarFormatChar = ms_aVarFormatChars[i];
|
|
if (*pVarFormatChar == vcFormat)
|
|
return static_cast<varFormat_e>(i);
|
|
}
|
|
|
|
return eVarFormat_Invalid;
|
|
}
|
|
|
|
//++
|
|
// Details: Return the equivalent var value formatted string for the given value
|
|
// type,
|
|
// which was prepared for printing (i.e. value was escaped and now it's
|
|
// ready
|
|
// for wrapping into quotes).
|
|
// The SBValue vrValue parameter is checked by LLDB private code for
|
|
// valid
|
|
// scalar type via MI Driver proxy function as the valued returned can
|
|
// also be
|
|
// an error condition. The proxy function determines if the check was
|
|
// valid
|
|
// otherwise return an error condition state by other means saying so.
|
|
// Type: Static method.
|
|
// Args: vrValue - (R) The var value object.
|
|
// veVarFormat - (R) Var format enumeration.
|
|
// Returns: CMIUtilString - Value formatted string.
|
|
// Throws: None.
|
|
//--
|
|
CMIUtilString CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted(
|
|
const lldb::SBValue &vrValue,
|
|
const CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veVarFormat) {
|
|
const CMICmnLLDBUtilSBValue utilValue(vrValue, true);
|
|
if (utilValue.IsIntegerType()) {
|
|
MIuint64 nValue = 0;
|
|
if (CMICmnLLDBProxySBValue::GetValueAsUnsigned(vrValue, nValue)) {
|
|
lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue);
|
|
return GetStringFormatted(nValue, rValue.GetValue(), veVarFormat);
|
|
}
|
|
}
|
|
|
|
return utilValue.GetValue().AddSlashes();
|
|
}
|
|
|
|
//++
|
|
// Details: Return number formatted string according to the given value type.
|
|
// Type: Static method.
|
|
// Args: vnValue - (R) The number value to get formatted.
|
|
// vpStrValueNatural - (R) The natural representation of the number
|
|
// value.
|
|
// veVarFormat - (R) Var format enumeration.
|
|
// Returns: CMIUtilString - Numerical formatted string.
|
|
// Throws: None.
|
|
//--
|
|
CMIUtilString CMICmnLLDBDebugSessionInfoVarObj::GetStringFormatted(
|
|
const MIuint64 vnValue, const char *vpStrValueNatural,
|
|
const CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veVarFormat) {
|
|
CMIUtilString strFormattedValue;
|
|
CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veFormat = veVarFormat;
|
|
if (ms_eDefaultFormat != eVarFormat_Invalid &&
|
|
veVarFormat == eVarFormat_Natural) {
|
|
veFormat = ms_eDefaultFormat;
|
|
}
|
|
|
|
switch (veFormat) {
|
|
case eVarFormat_Binary:
|
|
strFormattedValue = CMIUtilString::FormatBinary(vnValue);
|
|
break;
|
|
case eVarFormat_Octal:
|
|
strFormattedValue = CMIUtilString::Format("0%llo", vnValue);
|
|
break;
|
|
case eVarFormat_Decimal:
|
|
strFormattedValue = CMIUtilString::Format("%lld", vnValue);
|
|
break;
|
|
case eVarFormat_Hex:
|
|
strFormattedValue = CMIUtilString::Format("0x%llx", vnValue);
|
|
break;
|
|
case eVarFormat_Natural:
|
|
default: {
|
|
strFormattedValue = (vpStrValueNatural != nullptr) ? vpStrValueNatural : "";
|
|
}
|
|
}
|
|
|
|
return strFormattedValue;
|
|
}
|
|
|
|
//++
|
|
// Details: Delete internal container contents.
|
|
// Type: Static method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjClear() {
|
|
ms_mapVarIdToVarObj.clear();
|
|
}
|
|
|
|
//++
|
|
// Details: Add a var object to the internal container.
|
|
// Type: Static method.
|
|
// Args: vrVarObj - (R) The var value object.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjAdd(
|
|
const CMICmnLLDBDebugSessionInfoVarObj &vrVarObj) {
|
|
VarObjDelete(vrVarObj.GetName());
|
|
MapPairKeyToVarObj_t pr(vrVarObj.GetName(), vrVarObj);
|
|
ms_mapVarIdToVarObj.insert(pr);
|
|
}
|
|
|
|
//++
|
|
// Details: Delete the var object from the internal container matching the
|
|
// specified name.
|
|
// Type: Static method.
|
|
// Args: vrVarName - (R) The var value name.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjDelete(
|
|
const CMIUtilString &vrVarName) {
|
|
const MapKeyToVarObj_t::const_iterator it =
|
|
ms_mapVarIdToVarObj.find(vrVarName);
|
|
if (it != ms_mapVarIdToVarObj.end()) {
|
|
ms_mapVarIdToVarObj.erase(it);
|
|
}
|
|
}
|
|
|
|
//++
|
|
// Details: Update an existing var object in the internal container.
|
|
// Type: Static method.
|
|
// Args: vrVarObj - (R) The var value object.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjUpdate(
|
|
const CMICmnLLDBDebugSessionInfoVarObj &vrVarObj) {
|
|
VarObjAdd(vrVarObj);
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the var object matching the specified name.
|
|
// Type: Static method.
|
|
// Args: vrVarName - (R) The var value name.
|
|
// vrwVarObj - (W) A var object.
|
|
// Returns: bool - True = object found, false = object not found.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(
|
|
const CMIUtilString &vrVarName,
|
|
CMICmnLLDBDebugSessionInfoVarObj &vrwVarObj) {
|
|
const MapKeyToVarObj_t::const_iterator it =
|
|
ms_mapVarIdToVarObj.find(vrVarName);
|
|
if (it != ms_mapVarIdToVarObj.end()) {
|
|
const CMICmnLLDBDebugSessionInfoVarObj &rVarObj = (*it).second;
|
|
vrwVarObj = rVarObj;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//++
|
|
// Details: A count is kept of the number of var value objects created. This is
|
|
// count is
|
|
// used to ID the var value object. Reset the count to 0.
|
|
// Type: Static method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjIdResetToZero() {
|
|
ms_nVarUniqueId = 0;
|
|
}
|
|
|
|
//++
|
|
// Details: Default format is globally used as the data format when "natural" is
|
|
// in effect, that is, this overrides the default
|
|
// Type: Static method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjSetFormat(
|
|
varFormat_e eDefaultFormat) {
|
|
ms_eDefaultFormat = eDefaultFormat;
|
|
}
|
|
|
|
//++
|
|
// Details: A count is kept of the number of var value objects created. This is
|
|
// count is
|
|
// used to ID the var value object. Increment the count by 1.
|
|
// Type: Static method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::VarObjIdInc() { ms_nVarUniqueId++; }
|
|
|
|
//++
|
|
// Details: A count is kept of the number of var value objects created. This is
|
|
// count is
|
|
// used to ID the var value object. Retrieve ID.
|
|
// Type: Static method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
MIuint CMICmnLLDBDebugSessionInfoVarObj::VarObjIdGet() {
|
|
return ms_nVarUniqueId;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the value formatted object's name.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: CMIUtilString & - Value's var%u name text.
|
|
// Throws: None.
|
|
//--
|
|
const CMIUtilString &CMICmnLLDBDebugSessionInfoVarObj::GetName() const {
|
|
return m_strName;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the value formatted object's variable name as given in the
|
|
// MI command
|
|
// to create the var object.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: CMIUtilString & - Value's real name text.
|
|
// Throws: None.
|
|
//--
|
|
const CMIUtilString &CMICmnLLDBDebugSessionInfoVarObj::GetNameReal() const {
|
|
return m_strNameReal;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the value formatted string.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: CMIUtilString & - Value formatted string.
|
|
// Throws: None.
|
|
//--
|
|
const CMIUtilString &
|
|
CMICmnLLDBDebugSessionInfoVarObj::GetValueFormatted() const {
|
|
return m_strFormattedValue;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the LLDB Value object.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: lldb::SBValue & - LLDB Value object.
|
|
// Throws: None.
|
|
//--
|
|
lldb::SBValue &CMICmnLLDBDebugSessionInfoVarObj::GetValue() {
|
|
return m_SBValue;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the LLDB Value object.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: lldb::SBValue & - Constant LLDB Value object.
|
|
// Throws: None.
|
|
//--
|
|
const lldb::SBValue &CMICmnLLDBDebugSessionInfoVarObj::GetValue() const {
|
|
return m_SBValue;
|
|
}
|
|
|
|
//++
|
|
// Details: Set the var format type for *this object and update the formatting.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmnLLDBDebugSessionInfoVarObj::SetVarFormat(
|
|
const varFormat_e veVarFormat) {
|
|
if (veVarFormat >= eVarFormat_count)
|
|
return MIstatus::failure;
|
|
|
|
m_eVarFormat = veVarFormat;
|
|
UpdateValue();
|
|
return MIstatus::success;
|
|
}
|
|
|
|
//++
|
|
// Details: Update *this var obj. Update it's value and type.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: None.
|
|
// Throws: None.
|
|
//--
|
|
void CMICmnLLDBDebugSessionInfoVarObj::UpdateValue() {
|
|
m_strFormattedValue = GetValueStringFormatted(m_SBValue, m_eVarFormat);
|
|
|
|
MIuint64 nValue = 0;
|
|
if (CMICmnLLDBProxySBValue::GetValueAsUnsigned(m_SBValue, nValue) ==
|
|
MIstatus::failure)
|
|
m_eVarType = eVarType_Composite;
|
|
|
|
CMICmnLLDBDebugSessionInfoVarObj::VarObjUpdate(*this);
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the enumeration type of the var object.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: varType_e - Enumeration value.
|
|
// Throws: None.
|
|
//--
|
|
CMICmnLLDBDebugSessionInfoVarObj::varType_e
|
|
CMICmnLLDBDebugSessionInfoVarObj::GetType() const {
|
|
return m_eVarType;
|
|
}
|
|
|
|
//++
|
|
// Details: Retrieve the parent var object's name, the parent var object to
|
|
// *this var
|
|
// object (if assigned). The parent is equivalent to LLDB SBValue
|
|
// variable's
|
|
// parent.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Returns: CMIUtilString & - Pointer to var object, NULL = no parent.
|
|
// Throws: None.
|
|
//--
|
|
const CMIUtilString &
|
|
CMICmnLLDBDebugSessionInfoVarObj::GetVarParentName() const {
|
|
return m_strVarObjParentName;
|
|
}
|