From 4f3760fc3b647fa166da4ab777eb612b14ac500b Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 15 Jul 2026 21:05:19 +0200 Subject: Umbau auf modernes C++ --- include/xml.hpp | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'include/xml.hpp') diff --git a/include/xml.hpp b/include/xml.hpp index cc593a3..bc1fe47 100644 --- a/include/xml.hpp +++ b/include/xml.hpp @@ -1,28 +1,33 @@ -#ifndef XML_HPP_INCLUDED -#define XML_HPP_INCLUDED +#pragma once // Standard C++ -#include -#include +#include +#include +#include #include class XML { - public: - void parse(std::istream& in); +public: + XML() = default; + virtual ~XML() = default; + XML(const XML&) = default; + XML(XML&&) = default; + XML& operator=(const XML&) = default; + XML& operator=(XML&&) = default; - protected: - virtual void handle_start(const std::string& name, const std::vector>& attr) = 0; - virtual void handle_end(const std::string& name) = 0; - virtual void handle_cdata_start() {} - virtual void handle_cdata_end() {} - virtual void handle_data(const std::vector&) {} + void parse(std::istream& ins); - private: - static void tag_start(void* me, const char* name, const char* attr[]); - static void tag_end(void* me, const char* name); - static void cdata_start(void* me); - static void cdata_end(void* me); - static void data(void* me, const char* dat, int len); -}; +protected: + virtual void handle_start(std::string_view name, const std::vector>& attr) = 0; + virtual void handle_end(std::string_view name) = 0; + virtual void handle_cdata_start() {} + virtual void handle_cdata_end() {} + virtual void handle_character_data(std::span /* data */) {} -#endif +private: + static void tag_start(void* self, const char* name, const char** attr); + static void tag_end(void* self, const char* name); + static void cdata_start(void* self); + static void cdata_end(void* self); + static void data(void* self, const char* dat, int len); +}; -- cgit v1.3