void call(const glbinding::Function<void, Arguments...> * function, Arguments&&... arguments) const { glbinding::FunctionCall functionCall(function); if (function->isEnabled(glbinding::CallbackMask::Parameters)) functionCall.parameters = glbinding::createValues(std::forward<Arguments>(arguments)...); if (function->isEnabled(glbinding::CallbackMask::Before)) function->before(functionCall); if (function->m_beforeCallback) { function->m_beforeCallback(std::forward<Arguments>(arguments)...); } basicCall(function, std::forward<Arguments>(arguments)...); if (function->m_afterCallback) { function->m_afterCallback(std::forward<Arguments>(arguments)...); } if (function->isEnabled(glbinding::CallbackMask::After)) function->after(functionCall); }
ReturnType call(const glbinding::Function<ReturnType, Arguments...> * function, Arguments&&... arguments) const { glbinding::FunctionCall functionCall(function); if (function->isEnabled(glbinding::CallbackMask::Parameters)) functionCall.parameters = glbinding::createValues(std::forward<Arguments>(arguments)...); if (function->isEnabled(glbinding::CallbackMask::Before)) function->before(functionCall); if (function->m_beforeCallback) { function->m_beforeCallback(std::forward<Arguments>(arguments)...); } ReturnType value = basicCall(function, std::forward<Arguments>(arguments)...); if (function->m_afterCallback) { function->m_afterCallback(value, std::forward<Arguments>(arguments)...); } if (function->isEnabled(glbinding::CallbackMask::After)) { if (function->isEnabled(glbinding::CallbackMask::ReturnValue)) functionCall.returnValue = glbinding::createValue(value); function->after(functionCall); } return value; }
ReturnType call(const glbinding::Function<ReturnType, Arguments...> * function, Arguments&&... arguments) const { std::unique_ptr<glbinding::FunctionCall> functionCall{new glbinding::FunctionCall(function)}; if (function->isAnyEnabled(glbinding::CallbackMask::Parameters | glbinding::CallbackMask::Logging)) { functionCall->parameters = glbinding::createValues(std::forward<Arguments>(arguments)...); } if (function->isEnabled(glbinding::CallbackMask::Before)) { function->before(*functionCall); } if (function->m_beforeCallback) { function->m_beforeCallback(std::forward<Arguments>(arguments)...); } auto value = basicCall(function, std::forward<Arguments>(arguments)...); if (function->m_afterCallback) { function->m_afterCallback(value, std::forward<Arguments>(arguments)...); } if (function->isAnyEnabled(glbinding::CallbackMask::ReturnValue | glbinding::CallbackMask::Logging)) { functionCall->returnValue = glbinding::createValue(value); } if (function->isEnabled(glbinding::CallbackMask::After)) { function->after(*functionCall); } if(function->isEnabled(glbinding::CallbackMask::Logging)) { glbinding::logging::log(functionCall.release()); } return value; }
void call(const glbinding::Function<void, Arguments...> * function, Arguments&&... arguments) const { std::unique_ptr<glbinding::FunctionCall> functionCall(new glbinding::FunctionCall(function)); if (function->isAnyEnabled(glbinding::CallbackMask::Parameters | glbinding::CallbackMask::Logging)) { functionCall->parameters = glbinding::createValues(std::forward<Arguments>(arguments)...); } if (function->isEnabled(glbinding::CallbackMask::Before)) { function->before(*functionCall); } if (function->m_beforeCallback) { function->m_beforeCallback(std::forward<Arguments>(arguments)...); } basicCall(function, std::forward<Arguments>(arguments)...); if (function->m_afterCallback) { function->m_afterCallback(std::forward<Arguments>(arguments)...); } if (function->isEnabled(glbinding::CallbackMask::After)) { function->after(*functionCall); } if(function->isEnabled(glbinding::CallbackMask::Logging)) { glbinding::logging::log(functionCall.release()); } }