Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
728 B · 25 lines
C
1234567891011121314151617181920212223242526#pragma once
#include <expat.h>
#include <cstring>
// Safely tear down an expat parser: stop processing, clear callbacks, free, and null the pointer.inline void destroyXmlParser(XML_Parser& parser) { if (!parser) return; XML_StopParser(parser, XML_FALSE); XML_SetElementHandler(parser, nullptr, nullptr); XML_SetCharacterDataHandler(parser, nullptr); XML_ParserFree(parser); parser = nullptr;}
inline const char* xmlLocalName(const char* qName) { if (!qName) return ""; const char* const separator = std::strchr(qName, ':'); return separator ? separator + 1 : qName;}
inline bool xmlLocalNameEquals(const char* qName, const char* expected) { return std::strcmp(xmlLocalName(qName), expected) == 0;}