Factor out memberptr printing code from c_val_print
[deliverable/binutils-gdb.git] / gdb / c-valprint.c
index 0a61d7a6151eaa8d346f44b2d1539fd047d54dda..d76a206e25f5e108e858e9b83464e0743e95a3ac 100644 (file)
@@ -456,6 +456,26 @@ c_val_print_int (struct type *type, struct type *unresolved_type,
     }
 }
 
+/* c_val_print helper for TYPE_CODE_MEMBERPTR.  */
+
+static void
+c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
+                      int embedded_offset, CORE_ADDR address,
+                      struct ui_file *stream, int recurse,
+                      const struct value *original_value,
+                      const struct value_print_options *options)
+{
+  if (!options->format)
+    {
+      cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
+    }
+  else
+    {
+      generic_val_print (type, valaddr, embedded_offset, address, stream,
+                        recurse, original_value, options, &c_decorations);
+    }
+}
+
 /* See val_print for a description of the various parameters of this
    function; they are identical.  */
 
@@ -501,12 +521,9 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
       break;
 
     case TYPE_CODE_MEMBERPTR:
-      if (!options->format)
-       {
-         cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
-         break;
-       }
-      /* FALLTHROUGH */
+      c_val_print_memberptr (type, valaddr, embedded_offset, address, stream,
+                            recurse, original_value, options);
+      break;
 
     case TYPE_CODE_REF:
     case TYPE_CODE_ENUM:
This page took 0.02468 seconds and 4 git commands to generate.