Change "frame var" over to using OptionGroups (and thus the OptionGroupVariableObjectDisplay).
Change the boolean "use_dynamic" over to a tri-state, no-dynamic, dynamic-w/o running target,
and dynamic with running target.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@130832 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/StackFrame.cpp b/source/Target/StackFrame.cpp
index 169497a..cb4bbd4 100644
--- a/source/Target/StackFrame.cpp
+++ b/source/Target/StackFrame.cpp
@@ -486,14 +486,17 @@
 }
 
 ValueObjectSP
-StackFrame::GetValueForVariableExpressionPath (const char *var_expr_cstr, uint32_t options, Error &error)
+StackFrame::GetValueForVariableExpressionPath (const char *var_expr_cstr, 
+                                               lldb::DynamicValueType use_dynamic,
+                                               uint32_t options, 
+                                               lldb::VariableSP &var_sp,
+                                               Error &error)
 {
 
     if (var_expr_cstr && var_expr_cstr[0])
     {
         const bool check_ptr_vs_member = (options & eExpressionPathOptionCheckPtrVsMember) != 0;
         const bool no_fragile_ivar = (options & eExpressionPathOptionsNoFragileObjcIvar) != 0;
-        const bool dynamic_value = (options & eExpressionPathOptionsDynamicValue) != 0;
         error.Clear();
         bool deref = false;
         bool address_of = false;
@@ -526,10 +529,10 @@
             else
                 name_const_string.SetCStringWithLength (var_path.c_str(), separator_idx);
 
-            VariableSP var_sp (variable_list->FindVariable(name_const_string));
+            var_sp = variable_list->FindVariable(name_const_string);
             if (var_sp)
             {
-                valobj_sp = GetValueObjectForFrameVariable (var_sp, dynamic_value);
+                valobj_sp = GetValueObjectForFrameVariable (var_sp, use_dynamic);
                 if (!valobj_sp)
                     return valobj_sp;
                     
@@ -626,9 +629,9 @@
                             }
                             // Remove the child name from the path
                             var_path.erase(0, child_name.GetLength());
-                            if (dynamic_value)
+                            if (use_dynamic != lldb::eNoDynamicValues)
                             {
-                                ValueObjectSP dynamic_value_sp(child_valobj_sp->GetDynamicValue(true));
+                                ValueObjectSP dynamic_value_sp(child_valobj_sp->GetDynamicValue(use_dynamic));
                                 if (dynamic_value_sp)
                                     child_valobj_sp = dynamic_value_sp;
                             }
@@ -688,9 +691,9 @@
                                 // %i is the array index
                                 var_path.erase(0, (end - var_path.c_str()) + 1);
                                 separator_idx = var_path.find_first_of(".-[");
-                                if (dynamic_value)
+                                if (use_dynamic != lldb::eNoDynamicValues)
                                 {
-                                    ValueObjectSP dynamic_value_sp(child_valobj_sp->GetDynamicValue(true));
+                                    ValueObjectSP dynamic_value_sp(child_valobj_sp->GetDynamicValue(use_dynamic));
                                     if (dynamic_value_sp)
                                         child_valobj_sp = dynamic_value_sp;
                                 }
@@ -738,7 +741,8 @@
             }
             else
             {
-                error.SetErrorStringWithFormat("no variable named '%s' found in this frame", name_const_string.GetCString());
+                error.SetErrorStringWithFormat("no variable named '%s' found in this frame", 
+                                               name_const_string.GetCString());
             }
         }
     }
@@ -809,7 +813,7 @@
 
 
 ValueObjectSP
-StackFrame::GetValueObjectForFrameVariable (const VariableSP &variable_sp, bool use_dynamic)
+StackFrame::GetValueObjectForFrameVariable (const VariableSP &variable_sp, lldb::DynamicValueType use_dynamic)
 {
     ValueObjectSP valobj_sp;
     VariableList *var_list = GetVariableList (true);
@@ -830,9 +834,9 @@
             }
         }
     }
-    if (use_dynamic && valobj_sp)
+    if (use_dynamic != lldb::eNoDynamicValues && valobj_sp)
     {
-        ValueObjectSP dynamic_sp = valobj_sp->GetDynamicValue (true);
+        ValueObjectSP dynamic_sp = valobj_sp->GetDynamicValue (use_dynamic);
         if (dynamic_sp)
             return dynamic_sp;
     }
@@ -840,7 +844,7 @@
 }
 
 ValueObjectSP
-StackFrame::TrackGlobalVariable (const VariableSP &variable_sp, bool use_dynamic)
+StackFrame::TrackGlobalVariable (const VariableSP &variable_sp, lldb::DynamicValueType use_dynamic)
 {
     // Check to make sure we aren't already tracking this variable?
     ValueObjectSP valobj_sp (GetValueObjectForFrameVariable (variable_sp, use_dynamic));