src/lib/SAXContentHandler.h
branchv_0
changeset 4 7230e1ea0b07
parent 1 2179f13227f4
child 6 6a4a348426d9
--- a/src/lib/SAXContentHandler.h	Sun Mar 14 19:58:35 2021 +0100
+++ b/src/lib/SAXContentHandler.h	Sat Jun 12 18:34:19 2021 +0200
@@ -26,6 +26,37 @@
 
 	virtual ~SAXContentHandler() = default;
 
+	virtual void abc() = 0; // FIXME: remove dummy method
+	virtual void def(int a) = 0; // FIXME: remove dummy method
+	virtual void ghi(int a, int b) = 0; // FIXME: remove dummy method
+
+};
+
+class SAXContentHandlerProxy : public SAXContentHandler {
+private:
+	std::vector<std::shared_ptr<SAXContentHandler>> handlers;
+public:
+
+	void addHandler(std::shared_ptr<SAXContentHandler> handler) {
+		handlers.push_back(handler);
+	}
+
+#define handler for (auto ___h : handlers) ___h
+
+	void abc() override {
+		handler->abc();
+	}
+
+	void def(int a) override {
+		handler->def(a);
+	}
+
+	void ghi(int a, int b) override {
+		handler->ghi(a, b);
+	}
+
+#undef handler
+
 };
 
 }