summaryrefslogtreecommitdiff
path: root/src/xml.cpp
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2026-07-15 21:50:50 +0200
committerThomas Schmucker <ts@its1.de>2026-07-15 21:50:50 +0200
commit65ac3dfab18052a8152ef0954c97fa5b0bf245ae (patch)
treecf499411ab648bccb6932cd286ac6fd5ea08181d /src/xml.cpp
parent4f3760fc3b647fa166da4ab777eb612b14ac500b (diff)
downloadexpat++-65ac3dfab18052a8152ef0954c97fa5b0bf245ae.tar.gz
expat++-65ac3dfab18052a8152ef0954c97fa5b0bf245ae.tar.bz2
expat++-65ac3dfab18052a8152ef0954c97fa5b0bf245ae.zip
prefixe die Expat-C-API mit '::'HEADmaster
Diffstat (limited to 'src/xml.cpp')
-rw-r--r--src/xml.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/xml.cpp b/src/xml.cpp
index 451ee18..bb7ebd4 100644
--- a/src/xml.cpp
+++ b/src/xml.cpp
@@ -1,8 +1,8 @@
1// Standard C++ 1// Standard C++
2#include <array> 2#include <array>
3#include <memory> 3#include <memory>
4#include <sstream>
5#include <span> 4#include <span>
5#include <sstream>
6 6
7// Project 7// Project
8#include "xml.hpp" 8#include "xml.hpp"
@@ -15,15 +15,19 @@ using namespace std;
15void 15void
16XML::parse(istream& ins) 16XML::parse(istream& ins)
17{ 17{
18 unique_ptr<XML_ParserStruct, decltype(&XML_ParserFree)> parser(XML_ParserCreate(nullptr), XML_ParserFree); 18 unique_ptr<XML_ParserStruct, decltype(&::XML_ParserFree)> parser(::XML_ParserCreate(nullptr), ::XML_ParserFree);
19
20 if ( !parser ) {
21 throw bad_alloc();
22 }
19 23
20 // setup expat 24 // setup expat
21 XML_SetUserData(parser.get(), this); 25 ::XML_SetUserData(parser.get(), this);
22 XML_SetElementHandler(parser.get(), tag_start, tag_end); 26 ::XML_SetElementHandler(parser.get(), tag_start, tag_end);
23 XML_SetCdataSectionHandler(parser.get(), cdata_start, cdata_end); 27 ::XML_SetCdataSectionHandler(parser.get(), cdata_start, cdata_end);
24 XML_SetCharacterDataHandler(parser.get(), data); 28 ::XML_SetCharacterDataHandler(parser.get(), data);
25 29
26 static const auto buffer_size = 2048; 30 constexpr auto buffer_size = 2048;
27 31
28 array<char, buffer_size> buffer{}; 32 array<char, buffer_size> buffer{};
29 33
@@ -31,11 +35,11 @@ XML::parse(istream& ins)
31 ins.read(buffer.data(), buffer_size); 35 ins.read(buffer.data(), buffer_size);
32 done = ins.gcount() < buffer_size; 36 done = ins.gcount() < buffer_size;
33 37
34 if ( XML_Parse(parser.get(), buffer.data(), static_cast<int>(ins.gcount()), static_cast<int>(done)) != XML_STATUS_OK ) { 38 if ( ::XML_Parse(parser.get(), buffer.data(), static_cast<int>(ins.gcount()), static_cast<int>(done)) != XML_STATUS_OK ) {
35 stringstream msg; 39 stringstream msg;
36 40
37 msg << XML_ErrorString(XML_GetErrorCode(parser.get())); 41 msg << ::XML_ErrorString(XML_GetErrorCode(parser.get()));
38 msg << " in line " << XML_GetCurrentLineNumber(parser.get()); 42 msg << " in line " << ::XML_GetCurrentLineNumber(parser.get());
39 43
40 throw runtime_error(msg.str()); 44 throw runtime_error(msg.str());
41 } 45 }
@@ -75,5 +79,5 @@ XML::cdata_end(void* self)
75void 79void
76XML::data(void* self, const char* dat, int len) 80XML::data(void* self, const char* dat, int len)
77{ 81{
78 static_cast<XML*>(self)->handle_character_data({ dat, dat + len }); 82 static_cast<XML*>(self)->handle_character_data({ dat, static_cast<size_t>(len) });
79} 83}