32 fputs(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
stream);
42 void XmlWriter::Write<bool>(
const bool& val) {
44 fputs(val ?
"T" :
"F", stream);
48 void XmlWriter::Write<int>(
const int& val) {
50 fprintf(stream,
"%d", val);
54 void XmlWriter::Write<uint8_t>(
const uint8_t& val) {
59 void XmlWriter::Write<int16_t>(
const int16_t& val) {
64 void XmlWriter::Write<uint32_t>(
const uint32_t& val) {
66 fprintf(stream,
"%u", val);
70 void XmlWriter::Write<double>(
const double& val) {
72 fprintf(stream,
"%g", val);
76 void XmlWriter::Write<std::string>(
const std::string& val) {
78 std::string::const_iterator it;
79 for (it = val.begin(); it != val.end(); it++) {
83 fputs(
"<", stream);
86 fputs(
">", stream);
89 fputs(
"&", stream);
100 if (c >= 0 && c < 32)
101 fprintf(stream,
"&#x%04x;", 0xE000 + c);
110 void XmlWriter::Write<std::vector<int> >(
const std::vector<int>& val) {
111 WriteVector<int>(val);
115 void XmlWriter::Write<std::vector<bool> >(
const std::vector<bool>& val) {
116 WriteVector<bool>(val);
120 void XmlWriter::Write<std::vector<uint8_t> >(
const std::vector<uint8_t>& val) {
121 WriteVector<uint8_t>(val);
125 void XmlWriter::Write<std::vector<int16_t> >(
const std::vector<int16_t>& val) {
126 WriteVector<int16_t>(val);
130 void XmlWriter::Write<std::vector<uint32_t> >(
const std::vector<uint32_t>& val) {
131 WriteVector<uint32_t>(val);
135 void XmlWriter::Write<std::vector<double> >(
const std::vector<double>& val) {
136 WriteVector<double>(val);
146 typename std::vector<T>::const_iterator it;
148 for (it = val.begin(); it != val.end(); it++) {
166 fprintf(
stream,
"<%s>", name.c_str());
173 fprintf(
stream,
"<%s id=\"%04d\">", name.c_str(), ID);
180 fprintf(
stream,
"</%s>", name.c_str());
194 for (
int i = 0; i <
indent; i++)
203 template void XmlWriter::WriteNode<int>(
const std::string& name,
const int& val);
204 template void XmlWriter::WriteNode<bool>(
const std::string& name,
const bool& val);
205 template void XmlWriter::WriteNode<uint8_t>(
const std::string& name,
const uint8_t& val);
206 template void XmlWriter::WriteNode<int16_t>(
const std::string& name,
const int16_t& val);
207 template void XmlWriter::WriteNode<uint32_t>(
const std::string& name,
const uint32_t& val);
208 template void XmlWriter::WriteNode<double>(
const std::string& name,
const double& val);
209 template void XmlWriter::WriteNode<std::string>(
const std::string& name,
const std::string& val);
211 template void XmlWriter::WriteNode<std::vector<int> >(
const std::string& name,
const std::vector<int>& val);
212 template void XmlWriter::WriteNode<std::vector<bool> >(
const std::string& name,
const std::vector<bool>& val);
213 template void XmlWriter::WriteNode<std::vector<uint8_t> >(
const std::string& name,
const std::vector<uint8_t>& val);
214 template void XmlWriter::WriteNode<std::vector<int16_t> >(
const std::string& name,
const std::vector<int16_t>& val);
215 template void XmlWriter::WriteNode<std::vector<uint32_t> >(
const std::string& name,
const std::vector<uint32_t>& val);
void BeginElement(const std::string &name)
void EndElement(const std::string &name)
XmlWriter(const char *filename)
void WriteVector(const std::vector< T > &val)
void WriteNode(const std::string &name, const T &val)