1 /** 2 * @file xml_utils.h 3 * utility routines for generating XML 4 * 5 * @remark Copyright 2006 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author Dave Nomura 9 */ 10 11 #ifndef XML_UTILS_H 12 #define XML_UTILS_H 13 14 #include "symbol.h" 15 #include "format_output.h" 16 #include "xml_output.h" 17 18 typedef symbol_collection::const_iterator sym_iterator; 19 extern bool want_xml; 20 21 class extra_images; 22 class op_bfd; 23 24 class xml_utils { 25 public: 26 xml_utils(format_output::xml_formatter * xo, 27 symbol_collection const & s, size_t nc, 28 extra_images const & extra); 29 // these members are static because they are invoked before 30 // the xml_utils object has been created 31 static std::string get_timer_setup(size_t count); 32 static std::string get_event_setup(std::string event, size_t count, 33 std::string unit_mask); 34 static std::string get_profile_header(std::string cpu_name, 35 double const speed); 36 static void set_nr_cpus(size_t cpus); 37 static void set_nr_events(size_t events); 38 static void set_has_nonzero_masks(); 39 static void add_option(tag_t tag, bool value); 40 static void add_option(tag_t tag, std::string const & value); 41 static void add_option(tag_t tag, std::vector<std::string> const & value); 42 static void add_option(tag_t tag, std::list<std::string> const & value); 43 44 static void output_xml_header(std::string const & command_options, 45 std::string const & cpu_info, 46 std::string const & events); 47 void output_symbol_bytes(std::ostream & out, symbol_entry const * symb, 48 size_t sym_id, op_bfd const & abfd); 49 bool output_summary_data(std::ostream & out, count_array_t const & summary, 50 size_t pclass); 51 size_t get_symbol_index(sym_iterator const it); 52 void output_program_structure(std::ostream & out); 53 void build_subclasses(std::ostream & out); 54 private: 55 bool multiple_events; 56 bool has_subclasses; 57 size_t bytes_index; 58 extra_images const & extra_found_images; 59 static bool has_nonzero_masks; 60 static size_t events_index; 61 }; 62 63 extern xml_utils * xml_support; 64 65 #endif /* !XML_UTILS_H */ 66