Remove C/C++ relevant code in Fortran specific file.
[deliverable/binutils-gdb.git] / gdb / varobj.c
index f93e930ed4e81f2cc2bcc24774a94aae7103137e..7bd549d45c59d64eea6a3670e9b20066b94b2a2b 100644 (file)
@@ -50,7 +50,7 @@ show_varobjdebug (struct ui_file *file, int from_tty,
 }
 
 /* String representations of gdb's format codes.  */
-char *varobj_format_string[] =
+const char *varobj_format_string[] =
   { "natural", "binary", "decimal", "hexadecimal", "octal", "zero-hexadecimal" };
 
 /* True if we want to allow Python-based pretty-printing.  */
@@ -226,14 +226,6 @@ is_root_p (const struct varobj *var)
 }
 
 #ifdef HAVE_PYTHON
-/* Helper function to install a Python environment suitable for
-   use during operations on VAR.  */
-struct cleanup *
-varobj_ensure_python_env (const struct varobj *var)
-{
-  return ensure_python_env (var->root->exp->gdbarch,
-                           var->root->exp->language_defn);
-}
 
 /* See python-internal.h.  */
 gdbpy_enter_varobj::gdbpy_enter_varobj (const struct varobj *var)
@@ -732,7 +724,7 @@ varobj_clear_saved_item (struct varobj_dynamic *var)
   if (var->saved_item != NULL)
     {
       value_free (var->saved_item->value);
-      xfree (var->saved_item);
+      delete var->saved_item;
       var->saved_item = NULL;
     }
 }
@@ -807,7 +799,7 @@ update_dynamic_varobj_children (struct varobj *var,
                                 can_mention ? cchanged : NULL, i,
                                 item);
 
-         xfree (item);
+         delete item;
        }
       else
        {
@@ -1486,11 +1478,11 @@ varobj_set_visualizer (struct varobj *var, const char *visualizer)
   gdbpy_enter_varobj enter_py (var);
 
   mainmod = PyImport_AddModule ("__main__");
-  gdbpy_ref globals (PyModule_GetDict (mainmod));
+  gdbpy_ref<> globals (PyModule_GetDict (mainmod));
   Py_INCREF (globals.get ());
 
-  gdbpy_ref constructor (PyRun_String (visualizer, Py_eval_input,
-                                      globals.get (), globals.get ()));
+  gdbpy_ref<> constructor (PyRun_String (visualizer, Py_eval_input,
+                                        globals.get (), globals.get ()));
 
   if (constructor == NULL)
     {
@@ -2144,7 +2136,7 @@ varobj_get_value_type (const struct varobj *var)
 
   type = check_typedef (type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_REF)
+  if (TYPE_IS_REFERENCE (type))
     type = get_target_type (type);
 
   type = check_typedef (type);
@@ -2226,14 +2218,13 @@ value_of_root_1 (struct varobj **var_handle)
   struct value *new_val = NULL;
   struct varobj *var = *var_handle;
   int within_scope = 0;
-  struct cleanup *back_to;
                                                                 
   /*  Only root variables can be updated...  */
   if (!is_root_p (var))
     /* Not a root var.  */
     return NULL;
 
-  back_to = make_cleanup_restore_current_thread ();
+  scoped_restore_current_thread restore_thread;
 
   /* Determine whether the variable is still around.  */
   if (var->root->valid_block == NULL || var->root->floating)
@@ -2272,8 +2263,6 @@ value_of_root_1 (struct varobj **var_handle)
       END_CATCH
     }
 
-  do_cleanups (back_to);
-
   return new_val;
 }
 
@@ -2408,8 +2397,6 @@ varobj_value_get_print_value (struct value *value,
                              enum varobj_display_formats format,
                              const struct varobj *var)
 {
-  struct ui_file *stb;
-  struct cleanup *old_chain;
   struct value_print_options opts;
   struct type *type = NULL;
   long len = 0;
@@ -2421,9 +2408,7 @@ varobj_value_get_print_value (struct value *value,
   if (value == NULL)
     return std::string ();
 
-  stb = mem_fileopen ();
-  old_chain = make_cleanup_ui_file_delete (stb);
-
+  string_file stb;
   std::string thevalue;
 
 #if HAVE_PYTHON
@@ -2438,18 +2423,15 @@ varobj_value_get_print_value (struct value *value,
          /* First check to see if we have any children at all.  If so,
             we simply return {...}.  */
          if (dynamic_varobj_has_child_method (var))
-           {
-             do_cleanups (old_chain);
-             return xstrdup ("{...}");
-           }
+           return "{...}";
 
          if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
            {
              struct value *replacement;
 
-             gdbpy_ref output (apply_varobj_pretty_printer (value_formatter,
-                                                            &replacement,
-                                                            stb));
+             gdbpy_ref<> output (apply_varobj_pretty_printer (value_formatter,
+                                                              &replacement,
+                                                              &stb));
 
              /* If we have string like output ...  */
              if (output != NULL)
@@ -2492,10 +2474,7 @@ varobj_value_get_print_value (struct value *value,
                          type = builtin_type (gdbarch)->builtin_char;
 
                          if (!string_print)
-                           {
-                             do_cleanups (old_chain);
-                             return thevalue;
-                           }
+                           return thevalue;
                        }
                      else
                        gdbpy_print_stack ();
@@ -2515,20 +2494,17 @@ varobj_value_get_print_value (struct value *value,
 
   /* If the THEVALUE has contents, it is a regular string.  */
   if (!thevalue.empty ())
-    LA_PRINT_STRING (stb, type, (gdb_byte *) thevalue.c_str (),
+    LA_PRINT_STRING (&stb, type, (gdb_byte *) thevalue.c_str (),
                     len, encoding.get (), 0, &opts);
   else if (string_print)
     /* Otherwise, if string_print is set, and it is not a regular
        string, it is a lazy string.  */
-    val_print_string (type, encoding.get (), str_addr, len, stb, &opts);
+    val_print_string (type, encoding.get (), str_addr, len, &stb, &opts);
   else
     /* All other cases.  */
-    common_val_print (value, stb, 0, &opts, current_language);
-
-  thevalue = ui_file_as_string (stb);
+    common_val_print (value, &stb, 0, &opts, current_language);
 
-  do_cleanups (old_chain);
-  return thevalue;
+  return std::move (stb.string ());
 }
 
 int
This page took 0.026603 seconds and 4 git commands to generate.