18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file xml_output.cpp 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * utility routines for writing XML 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2006 OProfile authors 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Dave Nomura 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <sstream> 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <iostream> 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_xml_out.h" 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "xml_output.h" 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddusing namespace std; 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define MAX_XML_BUF 16384 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic char buf[MAX_XML_BUF]; 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring tag_name(tag_t tag) 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << xml_tag_name(tag); 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring open_element(tag_t tag, bool with_attrs) 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd buf[0] = '\0'; 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd open_xml_element(tag, with_attrs, buf, MAX_XML_BUF); 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << buf; 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring close_element(tag_t tag, bool has_nested) 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd buf[0] = '\0'; 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd close_xml_element(tag, has_nested, buf, MAX_XML_BUF); 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << buf; 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring init_attr(tag_t attr, size_t value) 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd buf[0] = '\0'; 578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd init_xml_int_attr(attr, value, buf, MAX_XML_BUF); 588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << buf; 598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring init_attr(tag_t attr, double value) 648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd buf[0] = '\0'; 688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd init_xml_dbl_attr(attr, value, buf, MAX_XML_BUF); 698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << buf; 708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstring init_attr(tag_t attr, string const & str) 758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd ostringstream out; 778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd buf[0] = '\0'; 798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd init_xml_str_attr(attr, str.c_str(), buf, MAX_XML_BUF); 808cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd out << buf; 818cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return out.str(); 828cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 83