#include <functional>
#include <iostream>
/** Global test function callback.
*
* Holds a callback function that can be invoked with a uint32_t value.
* Used for testing purposes in the example to demonstrate function pointers and lambdas.
*/
std::function<void(uint32_t)> onTestFunction = nullptr;
/** Example function.
*
* Demonstrates calling a callback function if it is set.
* This function checks if the global callback is assigned and invokes it with the provided value.
* Useful for illustrating callback mechanisms in C++.
*
* @param value The uint32_t value to pass to the callback.
*/
void example(uint32_t value) {
std::cout << "Value: " << value << std::endl;
}
/** Main entry point.
*
* Demonstrates the usage of the example function with a callback.
* Sets up a lambda as the callback that calls example recursively, then calls example with 42.
* This showcases C++11 features like lambdas and std::function.
*
* @return Always returns 0 indicating successful execution.
*/
int main() {
onTestFunction = [](uint32_t v) { example(v); };
example(42);
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KLyoqIEdsb2JhbCB0ZXN0IGZ1bmN0aW9uIGNhbGxiYWNrLgogKgogKiBIb2xkcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGludm9rZWQgd2l0aCBhIHVpbnQzMl90IHZhbHVlLgogKiBVc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGluIHRoZSBleGFtcGxlIHRvIGRlbW9uc3RyYXRlIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBsYW1iZGFzLgogKi8Kc3RkOjpmdW5jdGlvbjx2b2lkKHVpbnQzMl90KT4gb25UZXN0RnVuY3Rpb24gPSBudWxscHRyOwoKLyoqIEV4YW1wbGUgZnVuY3Rpb24uCiAqCiAqIERlbW9uc3RyYXRlcyBjYWxsaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gaWYgaXQgaXMgc2V0LgogKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgZ2xvYmFsIGNhbGxiYWNrIGlzIGFzc2lnbmVkIGFuZCBpbnZva2VzIGl0IHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLgogKiBVc2VmdWwgZm9yIGlsbHVzdHJhdGluZyBjYWxsYmFjayBtZWNoYW5pc21zIGluIEMrKy4KICoKICogQHBhcmFtIHZhbHVlIFRoZSB1aW50MzJfdCB2YWx1ZSB0byBwYXNzIHRvIHRoZSBjYWxsYmFjay4KICovCnZvaWQgZXhhbXBsZSh1aW50MzJfdCB2YWx1ZSkgewogICAgc3RkOjpjb3V0IDw8ICJWYWx1ZTogIiA8PCB2YWx1ZSA8PCBzdGQ6OmVuZGw7Cn0KCi8qKiBNYWluIGVudHJ5IHBvaW50LgogKgogKiBEZW1vbnN0cmF0ZXMgdGhlIHVzYWdlIG9mIHRoZSBleGFtcGxlIGZ1bmN0aW9uIHdpdGggYSBjYWxsYmFjay4KICogU2V0cyB1cCBhIGxhbWJkYSBhcyB0aGUgY2FsbGJhY2sgdGhhdCBjYWxscyBleGFtcGxlIHJlY3Vyc2l2ZWx5LCB0aGVuIGNhbGxzIGV4YW1wbGUgd2l0aCA0Mi4KICogVGhpcyBzaG93Y2FzZXMgQysrMTEgZmVhdHVyZXMgbGlrZSBsYW1iZGFzIGFuZCBzdGQ6OmZ1bmN0aW9uLgogKgogKiBAcmV0dXJuIEFsd2F5cyByZXR1cm5zIDAgaW5kaWNhdGluZyBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4KICovCmludCBtYWluKCkgewogICAgb25UZXN0RnVuY3Rpb24gPSBbXSh1aW50MzJfdCB2KSB7IGV4YW1wbGUodik7IH07CiAgICBleGFtcGxlKDQyKTsKICAgIHJldHVybiAwOwp9Cg==