DarkRadiant: master 46192738

Author Committer Branch Timestamp Parent
orbweaver orbweaver master 30.01.2024 20:19 master 25117a18
Changeset Replace usage of libxml2 with pugixml

pugixml is a lightweight C++ XML parsing library with a much more
ergonomic interface than libxml2, and more importantly fixes the
mysterious problem with XPaths that xmlReadFile() on Linux seems to
introduce.

Since our usage of XML was already wrapped in the xmlutil::Node and
Document classes, and well covered by unit tests, this replacement was
much more straightforward that it might otherwise have been. Very few
changes to the application outside of the xmlutil library were required,
and the only change to a unit test involved making the "round-trip"
SaveDocumentTo{String,File} tests more tolerant of formatting changes
since pugixml does not preserve formatting.

The pugixml library itself has been imported into libs/pugixml and the
HEADER_ONLY option set in its config, which will hopefully make the
Windows integration easy (or even a no-op).
add - libs/pugixml/pugiconfig.hpp Diff File
add - libs/pugixml/pugixml.cpp Diff File
add - libs/pugixml/pugixml.hpp Diff File
mod - libs/xmlutil/Document.cpp Diff File
mod - libs/xmlutil/Document.h Diff File
mod - libs/xmlutil/Node.cpp Diff File
mod - libs/xmlutil/Node.h Diff File
mod - radiant/eventmanager/ShortcutSaver.h Diff File
mod - radiantcore/map/format/portable/PortableMapWriter.cpp Diff File
mod - radiantcore/xmlregistry/RegistryTree.cpp Diff File
mod - test/XmlUtil.cpp Diff File
mod - test/algorithm/XmlUtils.h Diff File