summaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmnLLDBUtilSBValue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBUtilSBValue.cpp')
-rw-r--r--tools/lldb-mi/MICmnLLDBUtilSBValue.cpp460
1 files changed, 236 insertions, 224 deletions
diff --git a/tools/lldb-mi/MICmnLLDBUtilSBValue.cpp b/tools/lldb-mi/MICmnLLDBUtilSBValue.cpp
index 004be071260a..847bba2c8d0a 100644
--- a/tools/lldb-mi/MICmnLLDBUtilSBValue.cpp
+++ b/tools/lldb-mi/MICmnLLDBUtilSBValue.cpp
@@ -8,15 +8,15 @@
//===----------------------------------------------------------------------===//
//++
-// File: MICmnLLDBUtilSBValue.cpp
+// File: MICmnLLDBUtilSBValue.cpp
//
-// Overview: CMICmnLLDBUtilSBValue implementation.
+// Overview: CMICmnLLDBUtilSBValue 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,300 +25,312 @@
#include "MICmnLLDBDebugSessionInfo.h"
//++ ------------------------------------------------------------------------------------
-// Details: CMICmnLLDBUtilSBValue constructor.
-// Type: Method.
-// Args: vrValue - (R) The LLDb value object.
-// vbHandleCharType - (R) True = Yes return text molding to char type,
-// False = just return data.
-// Return: None.
-// Throws: None.
+// Details: CMICmnLLDBUtilSBValue constructor.
+// Type: Method.
+// Args: vrValue - (R) The LLDb value object.
+// vbHandleCharType - (R) True = Yes return text molding to char type,
+// False = just return data.
+// Return: None.
+// Throws: None.
//--
-CMICmnLLDBUtilSBValue::CMICmnLLDBUtilSBValue( const lldb::SBValue & vrValue, const bool vbHandleCharType /* = false */ )
-: m_rValue( const_cast< lldb::SBValue & >( vrValue ) )
-, m_pUnkwn( "??" )
-, m_bHandleCharType( vbHandleCharType )
+CMICmnLLDBUtilSBValue::CMICmnLLDBUtilSBValue(const lldb::SBValue &vrValue, const bool vbHandleCharType /* = false */)
+ : m_rValue(const_cast<lldb::SBValue &>(vrValue))
+ , m_pUnkwn("??")
+ , m_bHandleCharType(vbHandleCharType)
{
- m_bValidSBValue = m_rValue.IsValid();
+ m_bValidSBValue = m_rValue.IsValid();
}
//++ ------------------------------------------------------------------------------------
-// Details: CMICmnLLDBUtilSBValue destructor.
-// Type: Method.
-// Args: None.
-// Return: None.
-// Throws: None.
+// Details: CMICmnLLDBUtilSBValue destructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
//--
-CMICmnLLDBUtilSBValue::~CMICmnLLDBUtilSBValue( void )
+CMICmnLLDBUtilSBValue::~CMICmnLLDBUtilSBValue(void)
{
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve from the LLDB SB Value object the name of the variable. If the name
-// is invalid (or the SBValue object invalid) then "??" is returned.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - Name of the variable or "??" for unknown.
-// Throws: None.
+// Details: Retrieve from the LLDB SB Value object the name of the variable. If the name
+// is invalid (or the SBValue object invalid) then "??" is returned.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - Name of the variable or "??" for unknown.
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetName( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetName(void) const
{
- const MIchar * pName = m_bValidSBValue ? m_rValue.GetName() : nullptr;
- const CMIUtilString text( (pName != nullptr) ? pName : m_pUnkwn );
-
- return text;
+ const MIchar *pName = m_bValidSBValue ? m_rValue.GetName() : nullptr;
+ const CMIUtilString text((pName != nullptr) ? pName : m_pUnkwn);
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve from the LLDB SB Value object the value of the variable described in
-// text. If the value is invalid (or the SBValue object invalid) then "??" is
-// returned.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - Text description of the variable's value or "??".
-// Throws: None.
+// Details: Retrieve from the LLDB SB Value object the value of the variable described in
+// text. If the value is invalid (or the SBValue object invalid) then "??" is
+// returned.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - Text description of the variable's value or "??".
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetValue( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetValue(void) const
{
- CMIUtilString text;
-
- if( m_bHandleCharType && IsCharType() )
- {
- const lldb::addr_t addr = m_rValue.GetLoadAddress();
- text = CMIUtilString::Format( "0x%08x", addr );
- const CMIUtilString cString( GetValueCString() );
- if( !cString.empty() )
- text += CMIUtilString::Format( " %s", cString.c_str() );
- }
- else
- {
- const MIchar * pValue = m_bValidSBValue ? m_rValue.GetValue() : nullptr;
- text = (pValue != nullptr) ? pValue : m_pUnkwn;
- }
-
- return text;
+ CMIUtilString text;
+
+ if (m_bHandleCharType && IsCharType())
+ {
+ const lldb::addr_t addr = m_rValue.GetLoadAddress();
+ text = CMIUtilString::Format("0x%08x", addr);
+ const CMIUtilString cString(GetValueCString());
+ if (!cString.empty())
+ text += CMIUtilString::Format(" %s", cString.c_str());
+ }
+ else
+ {
+ const MIchar *pValue = m_bValidSBValue ? m_rValue.GetValue() : nullptr;
+ text = (pValue != nullptr) ? pValue : m_pUnkwn;
+ }
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: If the LLDB SB Value object is a char type then form the text data string
-// otherwise return nothing. m_bHandleCharType must be true to return text data
-// if any.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - Text description of the variable's value.
-// Throws: None.
+// Details: If the LLDB SB Value object is a char type then form the text data string
+// otherwise return nothing. m_bHandleCharType must be true to return text data
+// if any.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - Text description of the variable's value.
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetValueCString( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetValueCString(void) const
{
- CMIUtilString text;
-
- if( m_bHandleCharType && IsCharType() )
- {
- text = ReadCStringFromHostMemory( m_rValue );
- }
-
- return text;
+ CMIUtilString text;
+
+ if (m_bHandleCharType && IsCharType())
+ {
+ text = ReadCStringFromHostMemory(m_rValue);
+ }
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the flag stating whether this value object is a char type or some
-// other type. Char type can be signed or unsigned.
-// Type: Method.
-// Args: None.
-// Return: bool - True = Yes is a char type, false = some other type.
-// Throws: None.
+// Details: Retrieve the flag stating whether this value object is a char type or some
+// other type. Char type can be signed or unsigned.
+// Type: Method.
+// Args: None.
+// Return: bool - True = Yes is a char type, false = some other type.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsCharType( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsCharType(void) const
{
- const MIchar * pName = m_rValue.GetName(); MIunused( pName );
- const lldb::BasicType eType = m_rValue.GetType().GetBasicType();
- return ((eType == lldb::eBasicTypeChar) ||
- (eType == lldb::eBasicTypeSignedChar) ||
- (eType == lldb::eBasicTypeUnsignedChar) );
+ const MIchar *pName = m_rValue.GetName();
+ MIunused(pName);
+ const lldb::BasicType eType = m_rValue.GetType().GetBasicType();
+ return ((eType == lldb::eBasicTypeChar) || (eType == lldb::eBasicTypeSignedChar) || (eType == lldb::eBasicTypeUnsignedChar));
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the flag stating whether any child value object of *this object is a
-// char type or some other type. Returns false if there are not children. Char
-// type can be signed or unsigned.
-// Type: Method.
-// Args: None.
-// Return: bool - True = Yes is a char type, false = some other type.
-// Throws: None.
+// Details: Retrieve the flag stating whether any child value object of *this object is a
+// char type or some other type. Returns false if there are not children. Char
+// type can be signed or unsigned.
+// Type: Method.
+// Args: None.
+// Return: bool - True = Yes is a char type, false = some other type.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsChildCharType( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsChildCharType(void) const
{
- const MIuint nChildren = m_rValue.GetNumChildren();
-
- // Is it a basic type
- if( nChildren == 0 )
- return false;
-
- // Is it a composite type
- if( nChildren > 1 )
- return false;
-
- lldb::SBValue member = m_rValue.GetChildAtIndex( 0 );
- const CMICmnLLDBUtilSBValue utilValue( member );
- return utilValue.IsCharType();
+ const MIuint nChildren = m_rValue.GetNumChildren();
+
+ // Is it a basic type
+ if (nChildren == 0)
+ return false;
+
+ // Is it a composite type
+ if (nChildren > 1)
+ return false;
+
+ lldb::SBValue member = m_rValue.GetChildAtIndex(0);
+ const CMICmnLLDBUtilSBValue utilValue(member);
+ return utilValue.IsCharType();
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the C string data for a child of char type (one and only child) for
-// the parent value object. If the child is not a char type or the parent has
-// more than one child then an empty string is returned. Char type can be
-// signed or unsigned.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - Text description of the variable's value.
-// Throws: None.
+// Details: Retrieve the C string data for a child of char type (one and only child) for
+// the parent value object. If the child is not a char type or the parent has
+// more than one child then an empty string is returned. Char type can be
+// signed or unsigned.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - Text description of the variable's value.
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetChildValueCString( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetChildValueCString(void) const
{
- CMIUtilString text;
- const MIuint nChildren = m_rValue.GetNumChildren();
-
- // Is it a basic type
- if( nChildren == 0 )
- return text;
-
- // Is it a composite type
- if( nChildren > 1 )
- return text;
-
- lldb::SBValue member = m_rValue.GetChildAtIndex( 0 );
- const CMICmnLLDBUtilSBValue utilValue( member );
- if( m_bHandleCharType && utilValue.IsCharType() )
- {
- text = ReadCStringFromHostMemory( member );
- }
-
- return text;
+ CMIUtilString text;
+ const MIuint nChildren = m_rValue.GetNumChildren();
+
+ // Is it a basic type
+ if (nChildren == 0)
+ return text;
+
+ // Is it a composite type
+ if (nChildren > 1)
+ return text;
+
+ lldb::SBValue member = m_rValue.GetChildAtIndex(0);
+ const CMICmnLLDBUtilSBValue utilValue(member);
+ if (m_bHandleCharType && utilValue.IsCharType())
+ {
+ text = ReadCStringFromHostMemory(member);
+ }
+
+ return text;
}
-
+
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the C string data of value object by read the memory where the
-// variable is held.
-// Type: Method.
-// Args: vrValueObj - (R) LLDB SBValue variable object.
-// Return: CMIUtilString - Text description of the variable's value.
-// Throws: None.
+// Details: Retrieve the C string data of value object by read the memory where the
+// variable is held.
+// Type: Method.
+// Args: vrValueObj - (R) LLDB SBValue variable object.
+// Return: CMIUtilString - Text description of the variable's value.
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory( const lldb::SBValue & vrValueObj ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::ReadCStringFromHostMemory(const lldb::SBValue &vrValueObj) const
{
- CMIUtilString text;
-
- lldb::SBValue & rValue = const_cast< lldb::SBValue & >( vrValueObj );
- const lldb::addr_t addr = rValue.GetLoadAddress();
- CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
- const MIuint nBytes( 128 );
- const MIchar * pBufferMemory = new MIchar[ nBytes ];
- lldb::SBError error;
- const MIuint64 nReadBytes = rSessionInfo.m_lldbProcess.ReadMemory( addr, (void *) pBufferMemory, nBytes, error ); MIunused( nReadBytes );
- text = CMIUtilString::Format( "\\\"%s\\\"", pBufferMemory );
- delete [] pBufferMemory;
-
- return text;
+ CMIUtilString text;
+
+ lldb::SBValue &rValue = const_cast<lldb::SBValue &>(vrValueObj);
+ const lldb::addr_t addr = rValue.GetLoadAddress();
+ CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
+ const MIuint nBytes(128);
+ const MIchar *pBufferMemory = new MIchar[nBytes];
+ lldb::SBError error;
+ const MIuint64 nReadBytes = rSessionInfo.m_lldbProcess.ReadMemory(addr, (void *)pBufferMemory, nBytes, error);
+ MIunused(nReadBytes);
+ text = CMIUtilString::Format("\\\"%s\\\"", pBufferMemory);
+ delete[] pBufferMemory;
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the state of the value object's name.
-// Type: Method.
-// Args: None.
-// Return: bool - True = yes name is indeterminate, false = name is valid.
-// Throws: None.
+// Details: Retrieve the state of the value object's name.
+// Type: Method.
+// Args: None.
+// Return: bool - True = yes name is indeterminate, false = name is valid.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsNameUnknown( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsNameUnknown(void) const
{
- const CMIUtilString name( GetName() );
- return (name == m_pUnkwn);
+ const CMIUtilString name(GetName());
+ return (name == m_pUnkwn);
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the state of the value object's value data.
-// Type: Method.
-// Args: None.
-// Return: bool - True = yes value is indeterminate, false = value valid.
-// Throws: None.
+// Details: Retrieve the state of the value object's value data.
+// Type: Method.
+// Args: None.
+// Return: bool - True = yes value is indeterminate, false = value valid.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsValueUnknown( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsValueUnknown(void) const
{
- const CMIUtilString value( GetValue() );
- return (value == m_pUnkwn);
+ const CMIUtilString value(GetValue());
+ return (value == m_pUnkwn);
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the value object's type name if valid.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - The type name or "??".
-// Throws: None.
+// Details: Retrieve the value object's type name if valid.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - The type name or "??".
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetTypeName( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetTypeName(void) const
{
- const MIchar * pName = m_bValidSBValue ? m_rValue.GetTypeName() : nullptr;
- const CMIUtilString text( (pName != nullptr) ? pName : m_pUnkwn );
-
- return text;
+ const MIchar *pName = m_bValidSBValue ? m_rValue.GetTypeName() : nullptr;
+ const CMIUtilString text((pName != nullptr) ? pName : m_pUnkwn);
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the value object's display type name if valid.
-// Type: Method.
-// Args: None.
-// Return: CMIUtilString - The type name or "??".
-// Throws: None.
+// Details: Retrieve the value object's display type name if valid.
+// Type: Method.
+// Args: None.
+// Return: CMIUtilString - The type name or "??".
+// Throws: None.
//--
-CMIUtilString CMICmnLLDBUtilSBValue::GetTypeNameDisplay( void ) const
+CMIUtilString
+CMICmnLLDBUtilSBValue::GetTypeNameDisplay(void) const
{
- const MIchar * pName = m_bValidSBValue ? m_rValue.GetDisplayTypeName() : nullptr;
- const CMIUtilString text( (pName != nullptr) ? pName : m_pUnkwn );
-
- return text;
+ const MIchar *pName = m_bValidSBValue ? m_rValue.GetDisplayTypeName() : nullptr;
+ const CMIUtilString text((pName != nullptr) ? pName : m_pUnkwn);
+
+ return text;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve whether the value object's is valid or not.
-// Type: Method.
-// Args: None.
-// Return: bool - True = valid, false = not valid.
-// Throws: None.
+// Details: Retrieve whether the value object's is valid or not.
+// Type: Method.
+// Args: None.
+// Return: bool - True = valid, false = not valid.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsValid( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsValid(void) const
{
- return m_bValidSBValue;
+ return m_bValidSBValue;
}
//++ ------------------------------------------------------------------------------------
-// Details: Retrieve the value object' has a name. A value object can be valid but still
-// have no name which suggest it is not a variable.
-// Type: Method.
-// Args: None.
-// Return: bool - True = valid, false = not valid.
-// Throws: None.
+// Details: Retrieve the value object' has a name. A value object can be valid but still
+// have no name which suggest it is not a variable.
+// Type: Method.
+// Args: None.
+// Return: bool - True = valid, false = not valid.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::HasName( void ) const
+bool
+CMICmnLLDBUtilSBValue::HasName(void) const
{
- bool bHasAName = false;
+ bool bHasAName = false;
- const MIchar * pName = m_bValidSBValue ? m_rValue.GetDisplayTypeName() : nullptr;
- if( pName != nullptr )
- {
- bHasAName = (CMIUtilString( pName ).length() > 0);
- }
+ const MIchar *pName = m_bValidSBValue ? m_rValue.GetDisplayTypeName() : nullptr;
+ if (pName != nullptr)
+ {
+ bHasAName = (CMIUtilString(pName).length() > 0);
+ }
- return bHasAName;
+ return bHasAName;
}
//++ ------------------------------------------------------------------------------------
-// Details: Determine if the value object' respresents a LLDB variable i.e. "$0".
-// Type: Method.
-// Args: None.
-// Return: bool - True = Yes LLDB variable, false = no.
-// Throws: None.
+// Details: Determine if the value object' respresents a LLDB variable i.e. "$0".
+// Type: Method.
+// Args: None.
+// Return: bool - True = Yes LLDB variable, false = no.
+// Throws: None.
//--
-bool CMICmnLLDBUtilSBValue::IsLLDBVariable( void ) const
+bool
+CMICmnLLDBUtilSBValue::IsLLDBVariable(void) const
{
- return (GetName().at( 0 ) == '$' );
+ return (GetName().at(0) == '$');
}
-
-