55 return current ().obj.release ();
77 const std::string &col_name,
78 const std::string &col_hdr)
override
85 const char *fldname, LONGEST
value)
override;
87 const char *fldname, ULONGEST
value)
override;
90 const char *fldname)
override
94 const char *fldname,
const char *
string,
98 const char *format, va_list args)
override
108 const char *format, va_list args)
161 object_desc &desc =
current ();
164 if (PyList_Append (desc.obj.get (), obj.get ()) < 0)
169 if (PyDict_SetItemString (desc.obj.get (),
name, obj.get ()) < 0)
183 if (new_obj ==
nullptr)
189 object_desc new_desc;
191 new_desc.field_name = id;
192 new_desc.obj = std::move (new_obj);
193 new_desc.type =
type;
195 m_objects.push_back (std::move (new_desc));
204 object_desc new_obj = std::move (
current ());
206 add_field (new_obj.field_name.c_str (), new_obj.obj);
211 const char *fldname, LONGEST
value)
222 const char *fldname, ULONGEST
value)
233 const char *fldname,
const char *
string,
246 const char *format, va_list args)
251 std::string str = string_vprintf (format, args);
261 std::vector<gdb::unique_xmalloc_ptr<char>> arg_strings;
263 Py_ssize_t n_args = PyTuple_Size (args);
267 for (Py_ssize_t i = 0; i < n_args; ++i)
270 PyObject *arg = PyTuple_GetItem (args, i);
279 arg_strings.push_back (std::move (str));
286 scoped_restore save_uiout = make_scoped_restore (&
current_uiout, &uiout);
287 auto parser = gdb::make_unique<mi_parse> (std::move (
mi_command),
288 std::move (arg_strings));
291 catch (
const gdb_exception &except)
bool do_is_mi_like_p() const override
void do_progress_end() override
bool can_emit_style_escape() const override
void add_field(const char *name, const gdbpy_ref<> &obj)
gdb::optional< gdbpy_err_fetch > m_error
void do_field_string(int fldno, int width, ui_align align, const char *fldname, const char *string, const ui_file_style &style) override
void do_table_header(int width, ui_align align, const std::string &col_name, const std::string &col_hdr) override
void do_progress_notify(const std::string &, const char *, double, double) override
void do_field_fmt(int fldno, int width, ui_align align, const char *fldname, const ui_file_style &style, const char *format, va_list args) override ATTRIBUTE_PRINTF(7
void do_table_end() override
void do_message(const ui_file_style &style, const char *format, va_list args) override ATTRIBUTE_PRINTF(3
void do_text(const char *string) override
void do_field_signed(int fldno, int width, ui_align align, const char *fldname, LONGEST value) override
void do_table_begin(int nbrofcols, int nr_rows, const char *tblid) override
void do_begin(ui_out_type type, const char *id) override
void std::vector< object_desc > m_objects
void do_end(ui_out_type type) override
void void do_spaces(int numspaces) override
void do_progress_start() override
void do_table_body() override
void do_field_skip(int fldno, int width, ui_align align, const char *fldname) override
void do_field_unsigned(int fldno, int width, ui_align align, const char *fldname, ULONGEST value) override
virtual void virtual void do_wrap_hint(int indent)=0
virtual void do_flush()=0
virtual void do_redirect(struct ui_file *outstream)=0
static void ATTRIBUTE_PRINTF(1, 0)
void mi_execute_command(const char *cmd, int from_tty)
PyObject * gdbpy_execute_mi_command(PyObject *self, PyObject *args, PyObject *kw)
gdb::ref_ptr< T, gdbpy_ref_policy< T > > gdbpy_ref
static gdbpy_ref field_name(struct type *type, int field)
gdbpy_ref host_string_to_python_string(const char *str)
gdbpy_ref gdb_py_object_from_longest(LONGEST l)
void gdbpy_convert_exception(const struct gdb_exception &exception)
gdb::unique_xmalloc_ptr< char > python_string_to_host_string(PyObject *obj)
gdbpy_ref gdb_py_object_from_ulongest(ULONGEST l)
@ fix_multi_location_breakpoint_output
@ fix_breakpoint_script_output