This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH v3 11/15] extension language API for GDB: typeprint changes


This patch contains the associated changes to typeprint.[ch].
Basically it's just adding "ext_lang" to the API entry points
and changing the the arg that's passed around from void *
to a pointer to a struct (that can then contain members for
the extension language).

Changes from v2:
- in typeprint.c, replace #include "python/python.h" with "extension.h"

Changes from v1:
- updates for scripting -> extension renaming

2013-12-24  Doug Evans  <xdje42@gmail.com>

	* typeprint.c (do_free_global_table): Update to call
	free_ext_lang_type_printers.
	(create_global_typedef_table): Update to call
	start_ext_lang_type_printers.
	(find_global_typedef): Update to call apply_ext_lang_type_printers.
	* typeprint.h (struct ext_lang_type_printers): Add forward decl.
	(type_print_options): Change type of global_printers from "void *"
	to "struct ext_lang_type_printers *".

diff --git a/gdb/typeprint.c b/gdb/typeprint.c
index c5e45be..74e7f04 100644
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
@@ -37,7 +37,7 @@
 #include <errno.h>
 #include <ctype.h>
 #include "cli/cli-utils.h"
-#include "python/python.h"
+#include "extension.h"
 #include "completer.h"
 
 extern void _initialize_typeprint (void);
@@ -248,7 +248,7 @@ do_free_global_table (void *arg)
   struct type_print_options *flags = arg;
 
   free_typedef_hash (flags->global_typedefs);
-  free_type_printers (flags->global_printers);
+  free_ext_lang_type_printers (flags->global_printers);
 }
 
 /* Create the global typedef hash.  */
@@ -258,13 +258,13 @@ create_global_typedef_table (struct type_print_options *flags)
 {
   gdb_assert (flags->global_typedefs == NULL && flags->global_printers == NULL);
   flags->global_typedefs = create_typedef_hash ();
-  flags->global_printers = start_type_printers ();
+  flags->global_printers = start_ext_lang_type_printers ();
   return make_cleanup (do_free_global_table, flags);
 }
 
 /* Look up the type T in the global typedef hash.  If it is found,
    return the typedef name.  If it is not found, apply the
-   type-printers, if any, given by start_type_printers and return the
+   type-printers, if any, given by start_script_type_printers and return the
    result.  A NULL return means that the name was not found.  */
 
 static const char *
@@ -288,7 +288,7 @@ find_global_typedef (const struct type_print_options *flags,
       return new_tf->name;
     }
 
-  /* Put an entry into the hash table now, in case apply_type_printers
+  /* Put an entry into the hash table now, in case apply_script_type_printers
      recurses.  */
   new_tf = XOBNEW (&flags->global_typedefs->storage, struct typedef_field);
   new_tf->name = NULL;
@@ -296,7 +296,7 @@ find_global_typedef (const struct type_print_options *flags,
 
   *slot = new_tf;
 
-  applied = apply_type_printers (flags->global_printers, t);
+  applied = apply_ext_lang_type_printers (flags->global_printers, t);
 
   if (applied != NULL)
     {
diff --git a/gdb/typeprint.h b/gdb/typeprint.h
index 38ba5e6..1575677 100644
--- a/gdb/typeprint.h
+++ b/gdb/typeprint.h
@@ -22,6 +22,7 @@
 enum language;
 struct ui_file;
 struct typedef_hash_table;
+struct ext_lang_type_printers;
 
 struct type_print_options
 {
@@ -44,7 +45,7 @@ struct type_print_options
 
   /* The list of type printers associated with the global typedef
      table.  This is intentionally opaque.  */
-  void *global_printers;
+  struct ext_lang_type_printers *global_printers;
 };
 
 extern const struct type_print_options type_print_raw_options;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]