Home | History | Annotate | Download | only in libpp
      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