src/lib/SAXContentHandler.h
branchv_0
changeset 4 7230e1ea0b07
parent 1 2179f13227f4
child 6 6a4a348426d9
equal deleted inserted replaced
3:68026fe3aaf5 4:7230e1ea0b07
    24 class SAXContentHandler {
    24 class SAXContentHandler {
    25 public:
    25 public:
    26 
    26 
    27 	virtual ~SAXContentHandler() = default;
    27 	virtual ~SAXContentHandler() = default;
    28 
    28 
       
    29 	virtual void abc() = 0; // FIXME: remove dummy method
       
    30 	virtual void def(int a) = 0; // FIXME: remove dummy method
       
    31 	virtual void ghi(int a, int b) = 0; // FIXME: remove dummy method
       
    32 
       
    33 };
       
    34 
       
    35 class SAXContentHandlerProxy : public SAXContentHandler {
       
    36 private:
       
    37 	std::vector<std::shared_ptr<SAXContentHandler>> handlers;
       
    38 public:
       
    39 
       
    40 	void addHandler(std::shared_ptr<SAXContentHandler> handler) {
       
    41 		handlers.push_back(handler);
       
    42 	}
       
    43 
       
    44 #define handler for (auto ___h : handlers) ___h
       
    45 
       
    46 	void abc() override {
       
    47 		handler->abc();
       
    48 	}
       
    49 
       
    50 	void def(int a) override {
       
    51 		handler->def(a);
       
    52 	}
       
    53 
       
    54 	void ghi(int a, int b) override {
       
    55 		handler->ghi(a, b);
       
    56 	}
       
    57 
       
    58 #undef handler
       
    59 
    29 };
    60 };
    30 
    61 
    31 }
    62 }
    32 }
    63 }
    33 }
    64 }