27#if !defined(HAVE_LIBEXPAT)
29std::unique_ptr<osdata>
32 static int have_warned;
37 warning (_(
"Can not parse XML OS data; XML support was disabled "
49 std::unique_ptr<struct osdata>
osdata;
63 if (data->osdata != NULL)
64 gdb_xml_error (parser, _(
"Seen more than on osdata element"));
67 data->osdata.reset (
new struct osdata (std::string (
type)));
79 data->osdata->items.emplace_back ();
94 data->property_name.assign (
name);
108 item.
columns.emplace_back (std::move (data->property_name),
109 std::string (body_text));
145std::unique_ptr<osdata>
154 return std::move (data.osdata);
161std::unique_ptr<osdata>
164 std::unique_ptr<osdata>
osdata;
169 if ((*xml)[0] ==
'\0')
172 warning (_(
"Empty data returned by target. Wrong osdata type?"));
174 warning (_(
"Empty type list returned by target. No type data?"));
181 error (_(
"Can not fetch data now."));
202 int col_to_skip = -1;
211 if (*
type ==
'\0' && nrows == 0)
212 error (_(
"Available types of OS data not reported."));
225 for (
int ix = 0; ix < last->
columns.size (); ix++)
227 if (last->
columns[ix].name ==
"Title")
232 if (col_to_skip >= 0)
244 if (last != NULL && !last->
columns.empty ())
246 for (
int ix = 0; ix < last->
columns.size (); ix++)
250 if (ix == col_to_skip)
253 snprintf (col_name, 32,
"col%d", ix);
255 col_name, last->
columns[ix].name.c_str ());
268 for (
int ix_cols = 0; ix_cols < item.
columns.size (); ix_cols++)
272 if (ix_cols == col_to_skip)
275 snprintf (col_name, 32,
"col%d", ix_cols);
296 _(
"Show OS data ARG."));
static struct @4 attributes[]
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void text(const char *string)
void table_header(int width, ui_align align, const std::string &col_name, const std::string &col_hdr)
bool is_mi_like_p() const
struct cmd_list_element * add_info(const char *name, cmd_simple_func_ftype *fun, const char *doc)
std::unique_ptr< osdata > get_osdata(const char *type)
static void osdata_end_column(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
const struct gdb_xml_attribute column_attributes[]
void info_osdata(const char *type)
std::unique_ptr< osdata > osdata_parse(const char *xml)
const struct gdb_xml_element item_children[]
const struct gdb_xml_element osdata_children[]
static void info_osdata_command(const char *arg, int from_tty)
static void osdata_start_column(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
const std::string * get_osdata_column(const osdata_item &item, const char *name)
const struct gdb_xml_element osdata_elements[]
void _initialize_osdata()
static void osdata_start_osdata(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
static void osdata_start_item(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
const struct gdb_xml_attribute osdata_attributes[]
gdb::unique_xmalloc_ptr< void > value
std::vector< osdata_column > columns
std::unique_ptr< struct osdata > osdata
std::string property_name
std::vector< osdata_item > items
gdb::optional< gdb::char_vector > target_get_osdata(const char *type)
void gdb_xml_error(struct gdb_xml_parser *parser, const char *format,...)
int gdb_xml_parse_quick(const char *name, const char *dtd_name, const struct gdb_xml_element *elements, const char *document, void *user_data)
struct gdb_xml_value * xml_find_attribute(std::vector< gdb_xml_value > &attributes, const char *name)