Introduce compiled_regex, eliminate make_regfree_cleanup
[deliverable/binutils-gdb.git] / gdb / extension.h
index 61dc81b551c0dca13682876aca276ae43dec7ce3..2c79411e4fa38090d5f8ffa7cbc880d725d93063 100644 (file)
@@ -1,6 +1,6 @@
 /* Interface between gdb and its extension languages.
 
-   Copyright (C) 2014 Free Software Foundation, Inc.
+   Copyright (C) 2014-2017 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;
@@ -47,6 +48,12 @@ typedef void objfile_script_sourcer_func
   (const struct extension_language_defn *,
    struct objfile *, FILE *stream, const char *filename);
 
+/* A function to execute a script for an objfile.
+   Any exceptions are not caught, and are passed to the caller.  */
+typedef void objfile_script_executor_func
+  (const struct extension_language_defn *,
+   struct objfile *, const char *name, const char *script);
+
 /* Enum of each extension(/scripting) language.  */
 
 enum extension_language
@@ -138,6 +145,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;
@@ -176,6 +203,9 @@ extern script_sourcer_func *ext_lang_script_sourcer
 extern objfile_script_sourcer_func *ext_lang_objfile_script_sourcer
   (const struct extension_language_defn *);
 
+extern objfile_script_executor_func *ext_lang_objfile_script_executor
+  (const struct extension_language_defn *);
+
 extern int ext_lang_auto_load_enabled (const struct extension_language_defn *);
 
 /* Wrappers for each extension language API function that iterate over all
@@ -195,10 +225,10 @@ extern char *apply_ext_lang_type_printers (struct ext_lang_type_printers *,
 extern void free_ext_lang_type_printers (struct ext_lang_type_printers *);
 
 extern int apply_ext_lang_val_pretty_printer
-  (struct type *type, const gdb_byte *valaddr,
-   int embedded_offset, CORE_ADDR address,
+  (struct type *type,
+   LONGEST embedded_offset, CORE_ADDR address,
    struct ui_file *stream, int recurse,
-   const struct value *val, const struct value_print_options *options,
+   struct value *val, const struct value_print_options *options,
    const struct language_defn *language);
 
 extern enum ext_lang_bt_status apply_ext_lang_frame_filter
@@ -212,4 +242,26 @@ 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 *);
+
+extern struct type *get_xmethod_result_type (struct xmethod_worker *,
+                                            struct value *object,
+                                            struct value **args, int nargs);
+
 #endif /* EXTENSION_H */
This page took 0.043795 seconds and 4 git commands to generate.