summaryrefslogtreecommitdiffstats
path: root/lldb/source/API/SBValue.cpp
diff options
context:
space:
mode:
authorEnrico Granata <granata.enrico@gmail.com>2011-08-04 01:41:02 +0000
committerEnrico Granata <granata.enrico@gmail.com>2011-08-04 01:41:02 +0000
commit6fd87d5d33c677badffcab70b60e8dcc169de07e (patch)
treecbfbcdc89fc62be7c2d37d5e33883d9704ab8e08 /lldb/source/API/SBValue.cpp
parentb224db72b02a17981bec61c71c02566b542f9667 (diff)
downloadbcm5719-llvm-6fd87d5d33c677badffcab70b60e8dcc169de07e.tar.gz
bcm5719-llvm-6fd87d5d33c677badffcab70b60e8dcc169de07e.zip
APIs to GetValueAsSigned/Unsigned() in SBValue now also accept an SBError parameter to give more info about any problem
The synthetic children providers now use the new (safer) APIs to get the values of objects As a side effect, fixed an issue in ValueObject where ResolveValue() was not always updating the value before reading it llvm-svn: 136861
Diffstat (limited to 'lldb/source/API/SBValue.cpp')
-rw-r--r--lldb/source/API/SBValue.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/lldb/source/API/SBValue.cpp b/lldb/source/API/SBValue.cpp
index d874cc2fabc..820121132ee 100644
--- a/lldb/source/API/SBValue.cpp
+++ b/lldb/source/API/SBValue.cpp
@@ -619,6 +619,48 @@ SBValue::GetValueForExpressionPath(const char* expr_path)
}
int64_t
+SBValue::GetValueAsSigned(SBError& error, int64_t fail_value)
+{
+ if (m_opaque_sp)
+ {
+ if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
+ {
+ Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
+ Scalar scalar;
+ if (m_opaque_sp->ResolveValue (scalar))
+ return scalar.GetRawBits64(fail_value);
+ else
+ error.SetErrorString("could not get value");
+ }
+ else
+ error.SetErrorString("could not get target");
+ }
+ error.SetErrorString("invalid SBValue");
+ return fail_value;
+}
+
+uint64_t
+SBValue::GetValueAsUnsigned(SBError& error, uint64_t fail_value)
+{
+ if (m_opaque_sp)
+ {
+ if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
+ {
+ Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
+ Scalar scalar;
+ if (m_opaque_sp->ResolveValue (scalar))
+ return scalar.GetRawBits64(fail_value);
+ else
+ error.SetErrorString("could not get value");
+ }
+ else
+ error.SetErrorString("could not get target");
+ }
+ error.SetErrorString("invalid SBValue");
+ return fail_value;
+}
+
+int64_t
SBValue::GetValueAsSigned(int64_t fail_value)
{
if (m_opaque_sp)
OpenPOWER on IntegriCloud