get paid to paste

C/C++ Code Snippet: Eventhandling macro for classes...

C/C++ Code Snippet: Eventhandling macro for classes source code

struct EventArguments {
    PObject* sender;
};
 
#define PEVENT(name, argument) \
private: \
    typedef void (*##name##_callback) (##argument); \
    \
    std::vector<##name##_callback> ##name##_callbacks; \
    \
    void fire_##name##(##argument arg) { \
        for(std::vector<##name##_callback>::const_iterator i = ##name##_callbacks.begin(); i != ##name##_callbacks.end(); i++) { \
            ##name##_callback current = (*i);\
            current(arg); \
        }\
    }\
    public: \
    void attach_##name##_event(##name##_callback f) { \
        ##name##_callbacks.push_back(f); \
    }\
    \
    void detach_##name##_event(##name##_callback f) { \
        for(std::vector<##name##_callback>::const_iterator i = ##name##_callbacks.begin(); i != ##name##_callbacks.end(); i++) { \
            if((*i) == f) { \
                ##name##_callbacks.erase(i); \
                break; \
            } \
        }\
    }\
    \

Pasted: Sep 28, 2017, 8:10:35 pm
Views: 272