diff options
Diffstat (limited to 'lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp')
-rw-r--r-- | lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp | 172 |
1 files changed, 84 insertions, 88 deletions
diff --git a/lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp b/lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp index eeafa9ddd2a..5a3e8e43b5f 100644 --- a/lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp +++ b/lldb/tools/lldb-mi/MICmnLLDBProxySBValue.cpp @@ -13,13 +13,16 @@ #include "lldb/API/SBError.h" // In-house headers: +#include "MICmnLLDBDebugSessionInfo.h" #include "MICmnLLDBProxySBValue.h" #include "MIUtilString.h" -#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. +//++ +//------------------------------------------------------------------------------------ +// 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. @@ -27,35 +30,33 @@ // MIstatus::failure - Functionality failed. // Throws: None. //-- -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 arbitrary number - nValue = rValue.GetValueAsUnsigned(nFailValue); - if (nValue != nFailValue) - { - bCompositeType = false; - vwValue = nValue; - } - } - else - { - bCompositeType = false; - vwValue = nValue; +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 arbitrary 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. +//++ +//------------------------------------------------------------------------------------ +// 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. @@ -63,34 +64,31 @@ CMICmnLLDBProxySBValue::GetValueAsUnsigned(const lldb::SBValue &vrValue, MIuint6 // MIstatus::failure - Functionality failed. // Throws: None. //-- -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 arbitrary number - nValue = rValue.GetValueAsSigned(nFailValue); - if (nValue != nFailValue) - { - bCompositeType = false; - vwValue = nValue; - } - } - else - { - bCompositeType = false; - vwValue = nValue; +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 arbitrary 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 +//++ +//------------------------------------------------------------------------------------ +// 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. @@ -99,44 +97,42 @@ CMICmnLLDBProxySBValue::GetValueAsSigned(const lldb::SBValue &vrValue, MIint64 & // MIstatus::failure - Functionality failed, not suitable type. // Throws: None. //-- -bool -CMICmnLLDBProxySBValue::GetCString(const lldb::SBValue &vrValue, CMIUtilString &vwCString) -{ - lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); - const char *pCType = rValue.GetTypeName(); - if (pCType == nullptr) - return MIstatus::failure; +bool CMICmnLLDBProxySBValue::GetCString(const lldb::SBValue &vrValue, + CMIUtilString &vwCString) { + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValue); + const char *pCType = rValue.GetTypeName(); + if (pCType == nullptr) + return MIstatus::failure; - const char *pType = "unsigned char *"; - if (!CMIUtilString::Compare(pCType, pType)) - return MIstatus::failure; + const char *pType = "unsigned char *"; + if (!CMIUtilString::Compare(pCType, pType)) + return MIstatus::failure; - const CMIUtilString strAddr(rValue.GetValue()); - MIint64 nNum = 0; - if (!strAddr.ExtractNumber(nNum)) - return MIstatus::failure; + const CMIUtilString strAddr(rValue.GetValue()); + MIint64 nNum = 0; + if (!strAddr.ExtractNumber(nNum)) + return MIstatus::failure; - CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance()); - lldb::SBProcess sbProcess = rSessionInfo.GetProcess(); - MIuint nBufferSize = 64; - bool bNeedResize = false; - char *pBuffer = static_cast<char *>(::malloc(nBufferSize)); - do - { - lldb::SBError error; - const size_t nReadSize = sbProcess.ReadCStringFromMemory((lldb::addr_t)nNum, pBuffer, nBufferSize, error); - if (nReadSize == (nBufferSize - 1)) - { - bNeedResize = true; - nBufferSize = nBufferSize << 1; - pBuffer = static_cast<char *>(::realloc(pBuffer, nBufferSize)); - } - else - bNeedResize = false; - } while (bNeedResize); + CMICmnLLDBDebugSessionInfo &rSessionInfo( + CMICmnLLDBDebugSessionInfo::Instance()); + lldb::SBProcess sbProcess = rSessionInfo.GetProcess(); + MIuint nBufferSize = 64; + bool bNeedResize = false; + char *pBuffer = static_cast<char *>(::malloc(nBufferSize)); + do { + lldb::SBError error; + const size_t nReadSize = sbProcess.ReadCStringFromMemory( + (lldb::addr_t)nNum, pBuffer, nBufferSize, error); + if (nReadSize == (nBufferSize - 1)) { + bNeedResize = true; + nBufferSize = nBufferSize << 1; + pBuffer = static_cast<char *>(::realloc(pBuffer, nBufferSize)); + } else + bNeedResize = false; + } while (bNeedResize); - vwCString = pBuffer; - free((void *)pBuffer); + vwCString = pBuffer; + free((void *)pBuffer); - return MIstatus::success; + return MIstatus::success; } |