Add SBValue::GetDynamicValue and SBValue::GetStaticValue API's.
<rdar://problem/10545069>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@146173 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/API/SBValue.cpp b/source/API/SBValue.cpp
index 6ef4c38..c7ab549 100644
--- a/source/API/SBValue.cpp
+++ b/source/API/SBValue.cpp
@@ -597,6 +597,50 @@
 }
 
 lldb::SBValue
+SBValue::GetDynamicValue (lldb::DynamicValueType use_dynamic)
+{
+    if (m_opaque_sp)
+    {
+        if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
+        {
+            Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
+            return SBValue (m_opaque_sp->GetDynamicValue(use_dynamic));
+        }
+    }
+    
+    return SBValue();
+}
+
+lldb::SBValue
+SBValue::GetStaticValue ()
+{
+    if (m_opaque_sp)
+    {
+        if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
+        {
+            Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
+            return SBValue(m_opaque_sp->GetStaticValue());
+        }
+    }
+    
+    return SBValue();
+}
+
+bool
+SBValue::IsDynamic()
+{
+    if (m_opaque_sp)
+    {
+        if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
+        {
+            Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
+            return m_opaque_sp->IsDynamic();
+        }
+    }
+    return false;
+}
+
+lldb::SBValue
 SBValue::GetValueForExpressionPath(const char* expr_path)
 {
     lldb::ValueObjectSP child_sp;
diff --git a/source/Core/ValueObject.cpp b/source/Core/ValueObject.cpp
index d643a53..b433114 100644
--- a/source/Core/ValueObject.cpp
+++ b/source/Core/ValueObject.cpp
@@ -1920,6 +1920,12 @@
         return ValueObjectSP();
 }
 
+ValueObjectSP
+ValueObject::GetStaticValue()
+{
+    return GetSP();
+}
+
 // GetDynamicValue() returns a NULL SharedPointer if the object is not dynamic
 // or we do not really want a dynamic VO. this method instead returns this object
 // itself when making it synthetic has no meaning. this makes it much simpler