/* * Copyright (c) 2007 Wayne Meissner. All rights reserved. * * For licensing, see LICENSE.SPECS */ #ifdef _WIN32 #include #define sleep(x) Sleep(x) #endif #ifndef _WIN32 #include #include #endif int testAdd(int a, int b) { return a + b; }; int testFunctionAdd(int a, int b, int (*f)(int, int)) { return f(a, b); }; void testBlocking(int seconds) { sleep(seconds); }; struct async_data { void (*fn)(int); int value; }; static void* asyncThreadCall(void *data) { struct async_data* d = (struct async_data *) data; if (d != NULL && d->fn != NULL) { (*d->fn)(d->value); } return NULL; } void testAsyncCallback(void (*fn)(int), int value) { #ifndef _WIN32 pthread_t t; struct async_data d; d.fn = fn; d.value = value; pthread_create(&t, NULL, asyncThreadCall, &d); pthread_join(t, NULL); #else (*fn)(value); #endif } #if defined(_WIN32) && !defined(_WIN64) struct StructUCDP { unsigned char a1; double a2; void *a3; }; void __stdcall testStdcallManyParams(long *a1, char a2, short int a3, int a4, __int64 a5, struct StructUCDP a6, struct StructUCDP *a7, float a8, double a9) { } #endif