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

llvm-svn: 146173
diff --git a/lldb/source/API/SBValue.cpp b/lldb/source/API/SBValue.cpp
index 6ef4c38..c7ab549 100644
--- a/lldb/source/API/SBValue.cpp
+++ b/lldb/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;