Lav_PUBLIC_FUNCTION LavError Lav_nodeGetEventUserDataPointer(LavHandle nodeHandle, int event, void** destination) { PUB_BEGIN auto ptr = incomingObject<Node>(nodeHandle); LOCK(*ptr); *destination = ptr->getEvent(event).getUserData(); PUB_END }
//callback setup/configure/retrieval. Lav_PUBLIC_FUNCTION LavError Lav_nodeGetEventHandler(LavHandle nodeHandle, int event, LavEventCallback *destination) { PUB_BEGIN auto ptr = incomingObject<Node>(nodeHandle); LOCK(*ptr); *destination = ptr->getEvent(event).getExternalHandler(); PUB_END }
Lav_PUBLIC_FUNCTION LavError Lav_nodeSetEvent(LavHandle nodeHandle, int event, LavEventCallback handler, void* userData) { PUB_BEGIN auto ptr = incomingObject<Node>(nodeHandle); LOCK(*ptr); auto &ev = ptr->getEvent(event); if(handler) { ev.setHandler([=](Node* o, void* d) { handler(o->externalObjectHandle, d);}); ev.setExternalHandler(handler); ev.setUserData(userData); } else { ev.setHandler(std::function<void(Node*, void*)>()); ev.setExternalHandler(nullptr); } PUB_END }