diff options
author | Ed Maste <emaste@FreeBSD.org> | 2015-02-06 21:38:51 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2015-02-06 21:38:51 +0000 |
commit | 205afe679855a4ce8149cdaa94d3f0868ce796dc (patch) | |
tree | 09bc83f73246ee3c7a779605cd0122093d2a8a19 /tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp | |
parent | 0cac4ca3916ac24ab6139d03cbfd18db9e715bfe (diff) |
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp')
-rw-r--r-- | tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp | 859 |
1 files changed, 435 insertions, 424 deletions
diff --git a/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp b/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp index d519875993fe..c9abdd1cf90c 100644 --- a/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp +++ b/tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp @@ -8,15 +8,15 @@ //===----------------------------------------------------------------------===// //++ -// File: MICmnLLDBDebugSessionInfoVarObj.cpp +// File: MICmnLLDBDebugSessionInfoVarObj.cpp // -// Overview: CMICmnLLDBDebugSessionInfoVarObj implementation. +// Overview: CMICmnLLDBDebugSessionInfoVarObj implementation. // -// Environment: Compilers: Visual C++ 12. -// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 -// Libraries: See MIReadmetxt. +// Environment: Compilers: Visual C++ 12. +// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 +// Libraries: See MIReadmetxt. // -// Copyright: None. +// Copyright: None. //-- // In-house headers: @@ -25,546 +25,557 @@ #include "MICmnLLDBUtilSBValue.h" // Instantiations: -const MIchar * CMICmnLLDBDebugSessionInfoVarObj::ms_aVarFormatStrings[] = -{ - // CODETAG_SESSIONINFO_VARFORMAT_ENUM - // *** Order is import here. - "<Invalid var format>", - "binary", - "octal", - "decimal", - "hexadecimal", - "natural" -}; -const MIchar * 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 +const MIchar *CMICmnLLDBDebugSessionInfoVarObj::ms_aVarFormatStrings[] = { + // CODETAG_SESSIONINFO_VARFORMAT_ENUM + // *** Order is import here. + "<Invalid var format>", "binary", "octal", "decimal", "hexadecimal", "natural"}; +const MIchar *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 //++ ------------------------------------------------------------------------------------ -// Details: CMICmnLLDBDebugSessionInfoVarObj constructor. -// Type: Method. -// Args: None. -// Return: None. -// Throws: None. -//-- -CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj( void ) -: m_eVarFormat( eVarFormat_Natural ) -, m_eVarType( eVarType_Internal ) +// Details: CMICmnLLDBDebugSessionInfoVarObj constructor. +// Type: Method. +// Args: None. +// Return: None. +// Throws: None. +//-- +CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(void) + : m_eVarFormat(eVarFormat_Natural) + , m_eVarType(eVarType_Internal) { - // Do not call UpdateValue() in here as not necessary + // 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. +// 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 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. +// Details: CMICmnLLDBDebugSessionInfoVarObj copy constructor. +// Type: Method. +// Args: vrOther - (R) The object to copy from. +// Return: None. +// Throws: None. //-- -CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj( const CMICmnLLDBDebugSessionInfoVarObj & vrOther ) +CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(const CMICmnLLDBDebugSessionInfoVarObj &vrOther) { - CopyOther( vrOther ); + CopyOther(vrOther); } //++ ------------------------------------------------------------------------------------ -// Details: CMICmnLLDBDebugSessionInfoVarObj copy constructor. -// Type: Method. -// Args: vrOther - (R) The object to copy from. -// Return: None. -// Throws: None. +// Details: CMICmnLLDBDebugSessionInfoVarObj copy constructor. +// Type: Method. +// Args: vrOther - (R) The object to copy from. +// Return: None. +// Throws: None. //-- -CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj( CMICmnLLDBDebugSessionInfoVarObj & vrOther ) +CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(CMICmnLLDBDebugSessionInfoVarObj &vrOther) { - CopyOther( vrOther ); + CopyOther(vrOther); } //++ ------------------------------------------------------------------------------------ -// Details: CMICmnLLDBDebugSessionInfoVarObj move constructor. -// Type: Method. -// Args: vrwOther - (R) The object to copy from. -// Return: None. -// Throws: None. +// Details: CMICmnLLDBDebugSessionInfoVarObj move constructor. +// Type: Method. +// Args: vrwOther - (R) The object to copy from. +// Return: None. +// Throws: None. //-- -CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj( CMICmnLLDBDebugSessionInfoVarObj && vrwOther ) +CMICmnLLDBDebugSessionInfoVarObj::CMICmnLLDBDebugSessionInfoVarObj(CMICmnLLDBDebugSessionInfoVarObj &&vrwOther) { - MoveOther( vrwOther ); + MoveOther(vrwOther); } //++ ------------------------------------------------------------------------------------ -// Details: CMICmnLLDBDebugSessionInfoVarObj assignment operator. -// Type: Method. -// Args: vrOther - (R) The object to copy from. -// Return: CMICmnLLDBDebugSessionInfoVarObj & - Updated *this object. -// Throws: None. +// 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 ) +CMICmnLLDBDebugSessionInfoVarObj &CMICmnLLDBDebugSessionInfoVarObj::operator=(const CMICmnLLDBDebugSessionInfoVarObj &vrOther) { - CopyOther( vrOther ); + CopyOther(vrOther); - return *this; + return *this; } //++ ------------------------------------------------------------------------------------ -// Details: CMICmnLLDBDebugSessionInfoVarObj assignment operator. -// Type: Method. -// Args: vrwOther - (R) The object to copy from. -// Return: CMICmnLLDBDebugSessionInfoVarObj & - Updated *this object. -// Throws: None. +// 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 ) +CMICmnLLDBDebugSessionInfoVarObj &CMICmnLLDBDebugSessionInfoVarObj::operator=(CMICmnLLDBDebugSessionInfoVarObj &&vrwOther) { - MoveOther( vrwOther ); + MoveOther(vrwOther); - return *this; + 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: 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: 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. +// Details: CMICmnLLDBDebugSessionInfoVarObj destructor. +// Type: Overridden. +// Args: None. +// Return: None. +// Throws: None. //-- -CMICmnLLDBDebugSessionInfoVarObj::~CMICmnLLDBDebugSessionInfoVarObj( void ) +CMICmnLLDBDebugSessionInfoVarObj::~CMICmnLLDBDebugSessionInfoVarObj(void) { } //++ ------------------------------------------------------------------------------------ -// 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 MIchar * 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 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 MIchar *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: vrcFormat - (R) Character representing the var format. -// Return: varFormat_e - Var format enumeration. -// - No match found return eVarFormat_Invalid. -// Throws: None. -//-- -CMICmnLLDBDebugSessionInfoVarObj::varFormat_e CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForChar( const MIchar & vrcFormat ) -{ - if( 'r' == vrcFormat ) - return eVarFormat_Hex; - - // CODETAG_SESSIONINFO_VARFORMAT_ENUM - for( MIuint i = 0; i < eVarFormat_count; i++ ) - { - const MIchar * pVarFormatChar = ms_aVarFormatChars[ i ]; - if( *pVarFormatChar == vrcFormat ) - return static_cast< varFormat_e >( i ); - } - - return eVarFormat_Invalid; +// Details: Retrieve the var format enumeration for the specified character. +// Type: Static method. +// Args: vrcFormat - (R) Character representing the var format. +// Return: varFormat_e - Var format enumeration. +// - No match found return eVarFormat_Invalid. +// Throws: None. +//-- +CMICmnLLDBDebugSessionInfoVarObj::varFormat_e +CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForChar(const MIchar &vrcFormat) +{ + if ('r' == vrcFormat) + return eVarFormat_Hex; + + // CODETAG_SESSIONINFO_VARFORMAT_ENUM + for (MIuint i = 0; i < eVarFormat_count; i++) + { + const MIchar *pVarFormatChar = ms_aVarFormatChars[i]; + if (*pVarFormatChar == vrcFormat) + return static_cast<varFormat_e>(i); + } + + return eVarFormat_Invalid; } //++ ------------------------------------------------------------------------------------ -// Details: Return the equivalent var value formatted string for the given value type. -// 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 ) -{ - CMIUtilString strFormattedValue; - - MIuint64 nValue = 0; - if( CMICmnLLDBProxySBValue::GetValueAsUnsigned( vrValue, nValue ) == MIstatus::success ) - { - lldb::SBValue & rValue = const_cast< lldb::SBValue & >( vrValue ); - strFormattedValue = GetStringFormatted( nValue, rValue.GetValue(), veVarFormat ); - } - else - { - // Composite variable type i.e. struct - strFormattedValue = "{...}"; - } - - return strFormattedValue; +// Details: Return the equivalent var value formatted string for the given value type. +// 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) +{ + CMIUtilString strFormattedValue; + + MIuint64 nValue = 0; + if (CMICmnLLDBProxySBValue::GetValueAsUnsigned(vrValue, nValue) == MIstatus::success) + { + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); + strFormattedValue = GetStringFormatted(nValue, rValue.GetValue(), veVarFormat); + } + else + { + // Composite variable type i.e. struct + strFormattedValue = "{...}"; + } + + return strFormattedValue; } //++ ------------------------------------------------------------------------------------ -// Details: Return nuber 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 MIchar * vpStrValueNatural, const CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veVarFormat ) -{ - CMIUtilString strFormattedValue; - - switch( veVarFormat ) - { - 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: Return nuber 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 MIchar *vpStrValueNatural, + const CMICmnLLDBDebugSessionInfoVarObj::varFormat_e veVarFormat) +{ + CMIUtilString strFormattedValue; + + switch (veVarFormat) + { + 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. +// Details: Delete internal container contents. +// Type: Static method. +// Args: None. +// Returns: None. +// Throws: None. //-- -void CMICmnLLDBDebugSessionInfoVarObj::VarObjClear( void ) +void +CMICmnLLDBDebugSessionInfoVarObj::VarObjClear(void) { - ms_mapVarIdToVarObj.clear(); + 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: 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: 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. +// 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 ) +void +CMICmnLLDBDebugSessionInfoVarObj::VarObjUpdate(const CMICmnLLDBDebugSessionInfoVarObj &vrVarObj) { - VarObjAdd( 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: 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( void ) +// 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(void) { - ms_nVarUniqueId = 0; + ms_nVarUniqueId = 0; } //++ ------------------------------------------------------------------------------------ -// 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( void ) +// 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(void) { - ms_nVarUniqueId++; + 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( void ) +// 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(void) { - return ms_nVarUniqueId; + 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. +// 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( void ) const +const CMIUtilString & +CMICmnLLDBDebugSessionInfoVarObj::GetName(void) const { - return m_strName; + 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( void ) const +// 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(void) const { - return m_strNameReal; + return m_strNameReal; } - + //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the value formatted string. -// Type: Method. -// Args: None. -// Returns: CMIUtilString & - Value formatted string. -// Throws: None. +// Details: Retrieve the value formatted string. +// Type: Method. +// Args: None. +// Returns: CMIUtilString & - Value formatted string. +// Throws: None. //-- -const CMIUtilString & CMICmnLLDBDebugSessionInfoVarObj::GetValueFormatted( void ) const +const CMIUtilString & +CMICmnLLDBDebugSessionInfoVarObj::GetValueFormatted(void) const { - return m_strFormattedValue; + return m_strFormattedValue; } //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the LLDB Value object. -// Type: Method. -// Args: None. -// Returns: lldb::SBValue & - LLDB Value object. -// Throws: None. +// Details: Retrieve the LLDB Value object. +// Type: Method. +// Args: None. +// Returns: lldb::SBValue & - LLDB Value object. +// Throws: None. //-- -const lldb::SBValue & CMICmnLLDBDebugSessionInfoVarObj::GetValue( void ) const +const lldb::SBValue & +CMICmnLLDBDebugSessionInfoVarObj::GetValue(void) const { - return m_SBValue; + return m_SBValue; } //++ ------------------------------------------------------------------------------------ -// Details: Set the var format type for *this object and upate 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: Set the var format type for *this object and upate 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. +// Details: Update *this var obj. Update it's value and type. +// Type: Method. +// Args: None. +// Returns: None. +// Throws: None. //-- -void CMICmnLLDBDebugSessionInfoVarObj::UpdateValue( void ) +void +CMICmnLLDBDebugSessionInfoVarObj::UpdateValue(void) { - m_strFormattedValue = CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted( m_SBValue, m_eVarFormat ); + m_strFormattedValue = CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted(m_SBValue, m_eVarFormat); - MIuint64 nValue = 0; - if( CMICmnLLDBProxySBValue::GetValueAsUnsigned( m_SBValue, nValue ) == MIstatus::failure ) - m_eVarType = eVarType_Composite; + MIuint64 nValue = 0; + if (CMICmnLLDBProxySBValue::GetValueAsUnsigned(m_SBValue, nValue) == MIstatus::failure) + m_eVarType = eVarType_Composite; - CMICmnLLDBDebugSessionInfoVarObj::VarObjUpdate( *this ); + CMICmnLLDBDebugSessionInfoVarObj::VarObjUpdate(*this); } //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the enumeration type of the var object. -// Type: Method. -// Args: None. -// Returns: varType_e - Enumeration value. -// Throws: None. +// 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( void ) const +CMICmnLLDBDebugSessionInfoVarObj::varType_e +CMICmnLLDBDebugSessionInfoVarObj::GetType(void) const { - return m_eVarType; + 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( void ) const -{ - return m_strVarObjParentName; +// 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(void) const +{ + return m_strVarObjParentName; } -
\ No newline at end of file |