aboutsummaryrefslogtreecommitdiff
path: root/gdb/extension.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/extension.h')
-rw-r--r--gdb/extension.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/gdb/extension.h b/gdb/extension.h
index 61dc81b..c08d98d 100644
--- a/gdb/extension.h
+++ b/gdb/extension.h
@@ -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;
@@ -138,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;
+
/* The interface for gdb's own extension(/scripting) language. */
extern const struct extension_language_defn extension_language_gdb;
@@ -212,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 */