• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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