Synthetic values are now automatically enabled and active by default. SBValue is set up to always wrap a synthetic value when one is available.
A new setting enable-synthetic-value is provided on the target to disable this behavior.
There also is a new GetNonSyntheticValue() API call on SBValue to go back from synthetic to non-synthetic. There is no call to go from non-synthetic to synthetic.
The test suite has been changed accordingly.
Fallout from changes to type searching: an hack has to be played to make it possible to use maps that contain std::string due to the special name replacement operated by clang
Fixing a test case that was using libstdcpp instead of libc++ - caught as a consequence of said changes to type searching


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153495 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Interpreter/ScriptInterpreterPython.cpp b/source/Interpreter/ScriptInterpreterPython.cpp
index 81bbf3f..9c84eab 100644
--- a/source/Interpreter/ScriptInterpreterPython.cpp
+++ b/source/Interpreter/ScriptInterpreterPython.cpp
@@ -234,6 +234,24 @@
         DoFreeLock();
 }
 
+class ForceDisableSyntheticChildren
+{
+public:
+    ForceDisableSyntheticChildren (Target* target) :
+        m_target(target)
+    {
+        m_old_value = target->GetSuppressSyntheticValue();
+        target->SetSuppressSyntheticValue(true);
+    }
+    ~ForceDisableSyntheticChildren ()
+    {
+        m_target->SetSuppressSyntheticValue(m_old_value);
+    }
+private:
+    Target* m_target;
+    bool m_old_value;
+};
+
 ScriptInterpreterPython::ScriptInterpreterPython (CommandInterpreter &interpreter) :
     ScriptInterpreter (interpreter, eScriptLanguagePython),
     m_embedded_python_pty (),
@@ -1328,6 +1346,7 @@
 
     {
         Locker py_lock(this);
+        ForceDisableSyntheticChildren no_synthetics(target);
         ret_val = g_swig_synthetic_script    (class_name, 
                                               python_interpreter->m_dictionary_name.c_str(),
                                               valobj);
@@ -1586,6 +1605,7 @@
     
     {
         Locker py_lock(this);
+        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
         ret_val = g_swig_calc_children       (implementor);
     }
     
@@ -1612,6 +1632,7 @@
     
     {
         Locker py_lock(this);
+        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
         child_ptr = g_swig_get_child_index       (implementor,idx);
         if (child_ptr != NULL && child_ptr != Py_None)
         {
@@ -1648,6 +1669,7 @@
     
     {
         Locker py_lock(this);
+        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
         ret_val = g_swig_get_index_child       (implementor, child_name);
     }
     
@@ -1672,6 +1694,7 @@
     
     {
         Locker py_lock(this);
+        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
         ret_val = g_swig_update_provider       (implementor);
     }