<?xml version="1.0" encoding="utf-16"?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style><!--body
{font-family: Tahoma; font-size: 12pt;}
--></style>
</head>
<body>
Hello!
<div><br>
</div>
<div>During work on bug <a href="https://bugs.documentfoundation.org/show_bug.cgi?id=108124" style="font-size: 12pt;">https://bugs.documentfoundation.org/show_bug.cgi?id=108124</a> I found dumpAsXml methods in different classes (i.e. SwNode, SwNodes, SwDoc,
 SwPaM, SwPosition, etc.)</div>
<div>I've created separate function which creates XML writer, calls dumpAsXml from some class and outputs result to debugger output. This is useful, as I can call such function from debugger (using .call in WinDbg) and immediately get class contents as xml
 (i.e SwNodes as xml). This function accepts only one parameter - pointer to class. Such pointer can be found in locals window in debugger. So dumping any class to debug output become easy and quick task, without rewriting and recompiling code.</div>
<div><br>
</div>
<div>The code itself is at the end of this message (this is draft code, written quickly).</div>
<div><br>
</div>
<div>I can make this code better (add cross-platform'ness as it depends on OutputDebugStringA and I'm not sure that it exists in any other OS than Windows), and submit as patch to master. Also I can add several lines here on how to use my function to get xml
 dump during debugging <span style="font-size: 12pt;"><a href="https://wiki.documentfoundation.org/Development/How_to_debug#Debugging_options">https://wiki.documentfoundation.org/Development/How_to_debug#Debugging_options</a></span></div>
<div><br>
</div>
<div>If all this makes sense and can be useful not only for me?</div>
<div><br>
</div>
<div>---------------------------- Dumper function code ----------------------------------------</div>
<div><br>
</div>
<div> template <typename ClassWithDumpAsXml><br>
void DumpXmlToDebug(ClassWithDumpAsXml& tDumpedToDebug)<br>
{<br>
<br>
xmlDocPtr doc;<br>
xmlChar *xmlbuff;<br>
int buffersize;<br>
<br>
xmlTextWriterPtr xmlWrt = xmlNewTextWriterDoc(&doc, 0);<br>
assert(xmlWrt);<br>
<br>
if (xmlTextWriterStartDocument(xmlWrt, NULL, "ISO-8859-1", NULL) < 0)<br>
OutputDebugStringA("\n\nerror in xmlTextWriterStartDocument \n\n");<br>
<br>
tDumpedToDebug.dumpAsXml(xmlWrt);<br>
<br>
</div>
<div>if (xmlTextWriterEndDocument(xmlWrt) < 0)<br>
OutputDebugStringA("\n\nerror in xmlTextWriterEndDocument \n\n");<br>
<br>
xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);<br>
<br>
std::stringstream dbg;<br>
dbg << "\n !!!!!!-------- !!!!!!!\n !! Called for " << typeid(ClassWithDumpAsXml).name() << " !!\n " << (char *)xmlbuff << "\n\n\n";<br>
<br>
OutputDebugStringA(dbg.str().c_str());<br>
<br>
xmlFreeTextWriter(xmlWrt);<br>
xmlFree(xmlbuff);<br>
xmlFreeDoc(doc);<br>
}</div>
<div><br>
</div>
<div><br>
</div>
</body>
</html>