diff -r 68026fe3aaf5 -r 7230e1ea0b07 src/lib/ASN1ContentHandler.h --- 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 +#include + 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> handlers; +public: + + void addHandler(std::shared_ptr 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 + +}; + + } } }