diff options
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBProxySBValue.cpp')
-rw-r--r-- | tools/lldb-mi/MICmnLLDBProxySBValue.cpp | 217 |
1 files changed, 109 insertions, 108 deletions
diff --git a/tools/lldb-mi/MICmnLLDBProxySBValue.cpp b/tools/lldb-mi/MICmnLLDBProxySBValue.cpp index 78ef76bf698f1..a4f36b400fa77 100644 --- a/tools/lldb-mi/MICmnLLDBProxySBValue.cpp +++ b/tools/lldb-mi/MICmnLLDBProxySBValue.cpp @@ -8,15 +8,15 @@ //===----------------------------------------------------------------------===// //++ -// File: MICmnLLDBProxySBValue.cpp +// File: MICmnLLDBProxySBValue.cpp // -// Overview: CMICmnLLDBProxySBValue implementation. +// Overview: CMICmnLLDBProxySBValue 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. //-- #include <stdlib.h> @@ -30,124 +30,125 @@ #include "MICmnLLDBDebugSessionInfo.h" //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the numerical value from the SBValue object. If the function fails -// it could indicate the SBValue object does not represent an internal type. -// Type: Static method. -// Args: vrValue - (R) The SBValue object to get a value from. -// vwValue - (W) The numerical value. -// Return: MIstatus::success - Functionality succeeded. -// MIstatus::failure - Functionality failed. -// Throws: None. +// Details: Retrieve the numerical value from the SBValue object. If the function fails +// it could indicate the SBValue object does not represent an internal type. +// Type: Static method. +// Args: vrValue - (R) The SBValue object to get a value from. +// vwValue - (W) The numerical value. +// Return: MIstatus::success - Functionality succeeded. +// MIstatus::failure - Functionality failed. +// Throws: None. //-- -bool CMICmnLLDBProxySBValue::GetValueAsUnsigned( const lldb::SBValue & vrValue, MIuint64 & vwValue ) +bool +CMICmnLLDBProxySBValue::GetValueAsUnsigned(const lldb::SBValue &vrValue, MIuint64 &vwValue) { - lldb::SBValue & rValue = const_cast< lldb::SBValue & >( vrValue ); - bool bCompositeType = true; - MIuint64 nFailValue = 0; - MIuint64 nValue = rValue.GetValueAsUnsigned( nFailValue ); - if( nValue == nFailValue ) - { - nFailValue = 5; // Some arbitary number - nValue = rValue.GetValueAsUnsigned( nFailValue ); - if( nValue != nFailValue ) - { - bCompositeType = false; - vwValue = nValue; - } - } - else - { - bCompositeType = false; - vwValue = nValue; - } + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); + bool bCompositeType = true; + MIuint64 nFailValue = 0; + MIuint64 nValue = rValue.GetValueAsUnsigned(nFailValue); + if (nValue == nFailValue) + { + nFailValue = 5; // Some arbitary number + nValue = rValue.GetValueAsUnsigned(nFailValue); + if (nValue != nFailValue) + { + bCompositeType = false; + vwValue = nValue; + } + } + else + { + bCompositeType = false; + vwValue = nValue; + } - return (bCompositeType ? MIstatus::failure : MIstatus::success); + return (bCompositeType ? MIstatus::failure : MIstatus::success); } //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the numerical value from the SBValue object. If the function fails -// it could indicate the SBValue object does not represent an internal type. -// Type: Static method. -// Args: vrValue - (R) The SBValue object to get a value from. -// vwValue - (W) The numerical value. -// Return: MIstatus::success - Functionality succeeded. -// MIstatus::failure - Functionality failed. -// Throws: None. +// Details: Retrieve the numerical value from the SBValue object. If the function fails +// it could indicate the SBValue object does not represent an internal type. +// Type: Static method. +// Args: vrValue - (R) The SBValue object to get a value from. +// vwValue - (W) The numerical value. +// Return: MIstatus::success - Functionality succeeded. +// MIstatus::failure - Functionality failed. +// Throws: None. //-- -bool CMICmnLLDBProxySBValue::GetValueAsSigned( const lldb::SBValue & vrValue, MIint64 & vwValue ) +bool +CMICmnLLDBProxySBValue::GetValueAsSigned(const lldb::SBValue &vrValue, MIint64 &vwValue) { - lldb::SBValue & rValue = const_cast< lldb::SBValue & >( vrValue ); - bool bCompositeType = true; - MIuint64 nFailValue = 0; - MIuint64 nValue = rValue.GetValueAsSigned( nFailValue ); - if( nValue == nFailValue ) - { - nFailValue = 5; // Some arbitary number - nValue = rValue.GetValueAsSigned( nFailValue ); - if( nValue != nFailValue ) - { - bCompositeType = false; - vwValue = nValue; - } - } - else - { - bCompositeType = false; - vwValue = nValue; - } + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); + bool bCompositeType = true; + MIuint64 nFailValue = 0; + MIuint64 nValue = rValue.GetValueAsSigned(nFailValue); + if (nValue == nFailValue) + { + nFailValue = 5; // Some arbitary number + nValue = rValue.GetValueAsSigned(nFailValue); + if (nValue != nFailValue) + { + bCompositeType = false; + vwValue = nValue; + } + } + else + { + bCompositeType = false; + vwValue = nValue; + } - return (bCompositeType ? MIstatus::failure : MIstatus::success); + return (bCompositeType ? MIstatus::failure : MIstatus::success); } //++ ------------------------------------------------------------------------------------ -// Details: Retrieve the NUL terminated string from the SBValue object if it of the type -// unsigned char *. -// Type: Static method. -// Args: vrValue - (R) The SBValue object to get a value from. -// vwCString - (W) The text data '\0' terminated. -// Return: MIstatus::success - Functionality succeeded. -// MIstatus::failure - Functionality failed, not suitable type. -// Throws: None. +// Details: Retrieve the NUL terminated string from the SBValue object if it of the type +// unsigned char *. +// Type: Static method. +// Args: vrValue - (R) The SBValue object to get a value from. +// vwCString - (W) The text data '\0' terminated. +// Return: MIstatus::success - Functionality succeeded. +// MIstatus::failure - Functionality failed, not suitable type. +// Throws: None. //-- -bool CMICmnLLDBProxySBValue::GetCString( const lldb::SBValue & vrValue, CMIUtilString & vwCString ) +bool +CMICmnLLDBProxySBValue::GetCString(const lldb::SBValue &vrValue, CMIUtilString &vwCString) { - lldb::SBValue & rValue = const_cast< lldb::SBValue & >( vrValue ); - const MIchar * pCType = rValue.GetTypeName(); - if( pCType == nullptr ) - return MIstatus::failure; - - const MIchar * pType = "unsigned char *"; - if( !CMIUtilString::Compare( pCType, pType ) ) - return MIstatus::failure; + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); + const MIchar *pCType = rValue.GetTypeName(); + if (pCType == nullptr) + return MIstatus::failure; - const CMIUtilString strAddr( rValue.GetValue() ); - MIint64 nNum = 0; - if( !strAddr.ExtractNumber( nNum ) ) - return MIstatus::failure; + const MIchar *pType = "unsigned char *"; + if (!CMIUtilString::Compare(pCType, pType)) + return MIstatus::failure; - CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() ); - lldb::SBProcess & rProcess = rSessionInfo.m_lldbProcess; - MIuint nBufferSize = 64; - bool bNeedResize = false; - MIchar * pBuffer = static_cast< MIchar * >( ::malloc( nBufferSize ) ); - do - { - lldb::SBError error; - const size_t nReadSize = rProcess.ReadCStringFromMemory( (lldb::addr_t) nNum, pBuffer, nBufferSize, error ); - if( nReadSize == (nBufferSize - 1) ) - { - bNeedResize = true; - nBufferSize = nBufferSize << 1; - pBuffer = static_cast< MIchar * >( ::realloc( pBuffer, nBufferSize ) ); - } - else - bNeedResize = false; - } - while( bNeedResize ); + const CMIUtilString strAddr(rValue.GetValue()); + MIint64 nNum = 0; + if (!strAddr.ExtractNumber(nNum)) + return MIstatus::failure; - vwCString = pBuffer; - free( (void *) pBuffer ); + CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance()); + lldb::SBProcess &rProcess = rSessionInfo.m_lldbProcess; + MIuint nBufferSize = 64; + bool bNeedResize = false; + MIchar *pBuffer = static_cast<MIchar *>(::malloc(nBufferSize)); + do + { + lldb::SBError error; + const size_t nReadSize = rProcess.ReadCStringFromMemory((lldb::addr_t)nNum, pBuffer, nBufferSize, error); + if (nReadSize == (nBufferSize - 1)) + { + bNeedResize = true; + nBufferSize = nBufferSize << 1; + pBuffer = static_cast<MIchar *>(::realloc(pBuffer, nBufferSize)); + } + else + bNeedResize = false; + } while (bNeedResize); - return MIstatus::success; -} + vwCString = pBuffer; + free((void *)pBuffer); + return MIstatus::success; +} |