#include <stdio.h>
#include <callback.h>

static void add(void* data, va_alist alist)
{
  int a, b, r;
  va_start_int(alist);
  a = va_arg_int(alist);
  b = va_arg_int(alist);
  r = a + b;

  printf("data = %p: %d + %d = %d\n", data, a, b, r);

  va_return_int(alist, r);
}

int main()
{
  __TR_function callback;
  int r;

  callback = alloc_callback(add, (void*)0xBEBEBE);
  r = ((int (*) (int,int)) callback) (2,3);

  printf("%d\n", r);

  return 0;
}

