/** * @file xml_utils.h * utility routines for generating XML * * @remark Copyright 2006 OProfile authors * @remark Read the file COPYING * * @author Dave Nomura */ #ifndef XML_UTILS_H #define XML_UTILS_H #include "symbol.h" #include "format_output.h" #include "xml_output.h" typedef symbol_collection::const_iterator sym_iterator; extern bool want_xml; class extra_images; class op_bfd; class xml_utils { public: xml_utils(format_output::xml_formatter * xo, symbol_collection const & s, size_t nc, extra_images const & extra); // these members are static because they are invoked before // the xml_utils object has been created static std::string get_timer_setup(size_t count); static std::string get_event_setup(std::string event, size_t count, std::string unit_mask); static std::string get_profile_header(std::string cpu_name, double const speed); static void set_nr_cpus(size_t cpus); static void set_nr_events(size_t events); static void set_has_nonzero_masks(); static void add_option(tag_t tag, bool value); static void add_option(tag_t tag, std::string const & value); static void add_option(tag_t tag, std::vector<std::string> const & value); static void add_option(tag_t tag, std::list<std::string> const & value); static void output_xml_header(std::string const & command_options, std::string const & cpu_info, std::string const & events); void output_symbol_bytes(std::ostream & out, symbol_entry const * symb, size_t sym_id, op_bfd const & abfd); bool output_summary_data(std::ostream & out, count_array_t const & summary, size_t pclass); size_t get_symbol_index(sym_iterator const it); void output_program_structure(std::ostream & out); void build_subclasses(std::ostream & out); private: bool multiple_events; bool has_subclasses; size_t bytes_index; extra_images const & extra_found_images; static bool has_nonzero_masks; static size_t events_index; }; extern xml_utils * xml_support; #endif /* !XML_UTILS_H */