Callback
From C
Code Sample #1
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
typedef int function(int a, int b);
int call_function(function *p, int a, int b) {
return p(a, b);
}
int main(void) {
int sum;
sum = call_function(&add, 10, 5);
printf("add: %d\n", sum);
sum = call_function(&sub, 10, 5);
printf("sub: %d\n", sum);
return 0;
}
Code Sample #2
#include <stdio.h>
struct add_ctx {
int a;
int b;
int c;
};
int add(void *ctx_) {
struct add_ctx *ctx = ctx_;
return ctx->a + ctx->b + ctx->c;
}
struct sub_ctx {
int a;
int b;
};
int sub(void *ctx_) {
struct sub_ctx *ctx = ctx_;
return ctx->a - ctx->b;
}
typedef int function(void *);
int call_function(function *p, void *ctx) {
return p(ctx);
}
int main(void) {
int sum;
struct add_ctx add_ctx = { 1, 2 , 3};
sum = call_function(&add, &add_ctx);
printf("add: %d\n", sum);
struct sub_ctx sub_ctx = { 1, 2};
sum = call_function(&sub, &sub_ctx);
printf("sub: %d\n", sum);
return 0;
}
.
