--- a/src/lib/ASN1ContentHandler.h Sun Mar 14 19:58:35 2021 +0100
+++ b/src/lib/ASN1ContentHandler.h Sat Jun 12 18:34:19 2021 +0200
@@ -16,14 +16,53 @@
*/
#pragma once
+#include <memory>
+#include <vector>
+
namespace relpipe {
namespace in {
namespace asn1 {
namespace lib {
class ASN1ContentHandler {
+public:
+
+ virtual ~ASN1ContentHandler() = 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 ASN1ContentHandlerProxy : public ASN1ContentHandler {
+private:
+ std::vector<std::shared_ptr<ASN1ContentHandler>> handlers;
+public:
+
+ void addHandler(std::shared_ptr<ASN1ContentHandler> 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
+
+};
+
+
}
}
}