summaryrefslogtreecommitdiffstats
path: root/lldb/source/API/SBValue.cpp
diff options
context:
space:
mode:
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