Don't print symbol on address 0x0
[deliverable/binutils-gdb.git] / gdb / extension.h
index b80c5fff73fbec0ebb407f8f574370b2c0e9dccb..c08d98dadbc868afc001512e310b8014fb30cb26 100644 (file)
@@ -1,6 +1,6 @@
 /* Interface between gdb and its extension languages.
 
-   Copyright (C) 2013 Free Software Foundation, Inc.
+   Copyright (C) 2014 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,7 @@
 #define EXTENSION_H
 
 #include "mi/mi-cmds.h" /* For PRINT_NO_VALUES, etc.  */
+#include "common/vec.h"
 
 struct breakpoint;
 struct command_line;
@@ -53,7 +54,8 @@ enum extension_language
   {
     EXT_LANG_NONE,
     EXT_LANG_GDB,
-    EXT_LANG_PYTHON
+    EXT_LANG_PYTHON,
+    EXT_LANG_GUILE
   };
 
 /* Extension language frame-filter status return values.  */
@@ -137,6 +139,26 @@ struct ext_lang_type_printers
   /* Type-printers from Python.  */
   void *py_type_printers;
 };
+
+/* A type which holds its extension language specific xmethod worker data.  */
+
+struct xmethod_worker
+{
+  /* The language the xmethod worker is implemented in.  */
+  const struct extension_language_defn *extlang;
+
+  /* The extension language specific data for this xmethod worker.  */
+  void *data;
+
+  /* The TYPE_CODE_XMETHOD value corresponding to this worker.
+     Always use value_of_xmethod to access it.  */
+  struct value *value;
+};
+
+typedef struct xmethod_worker *xmethod_worker_ptr;
+DEF_VEC_P (xmethod_worker_ptr);
+typedef VEC (xmethod_worker_ptr) xmethod_worker_vec;
+
 \f
 /* The interface for gdb's own extension(/scripting) language.  */
 extern const struct extension_language_defn extension_language_gdb;
@@ -211,4 +233,22 @@ extern const struct extension_language_defn *get_breakpoint_cond_ext_lang
 
 extern int breakpoint_ext_lang_cond_says_stop (struct breakpoint *);
 
+extern struct value *invoke_xmethod (struct xmethod_worker *,
+                                    struct value *,
+                                    struct value **, int nargs);
+
+extern struct xmethod_worker *clone_xmethod_worker (struct xmethod_worker *);
+
+extern struct xmethod_worker *new_xmethod_worker
+  (const struct extension_language_defn *extlang, void *data);
+
+extern void free_xmethod_worker (struct xmethod_worker *);
+
+extern void free_xmethod_worker_vec (void *vec);
+
+extern xmethod_worker_vec *get_matching_xmethod_workers
+  (struct type *, const char *);
+
+extern struct type **get_xmethod_arg_types (struct xmethod_worker *, int *);
+
 #endif /* EXTENSION_H */
This page took 0.026672 seconds and 4 git commands to generate.