#include "std.h"
DLLEXPORT int TakeInt(int x) {
if (x == 42) return 1;
return 0;
}
DLLEXPORT int TakeUInt(unsigned int x) {
if (x == 42) return 1;
return 0;
}
DLLEXPORT int TakeTwoShorts(short x, short y) {
if (x == 10 && y == 20) return 2;
return 0;
}
DLLEXPORT long AssortedIntArgs(long x, short y, char z) {
if (x == 101 && y == 102 && z == 103) return 3;
return 0;
}
DLLEXPORT int TakeADouble(double x) {
if (-6.9 - x < 0.001) return 4;
return 0;
}
DLLEXPORT int TakeADoubleNaN(double x) {
if (isnan(x)) return 4;
return 0;
}
DLLEXPORT int TakeAFloat(float x) {
if (4.2 - x < 0.001) return 5;
return 0;
}
DLLEXPORT int TakeAFloatNaN(float x) {
if (isnan(x)) return 5;
return 0;
}
DLLEXPORT int TakeAString(char *pass_msg) {
if (0 == strcmp(pass_msg, "ok 6 - passed a string")) return 6;
return 0;
}
static char *cached_str = NULL;
DLLEXPORT void SetString(char *str) {
cached_str = str;
}
DLLEXPORT int CheckString() {
if (0 == strcmp(cached_str, "ok 7 - checked previously passed string")) return 7;
return 0;
}
DLLEXPORT int wrapped(int n) {
if (n == 42) return 8;
return 0;
}
DLLEXPORT int TakeInt64(int64_t x) {
if (x == 0xFFFFFFFFFF) return 9;
return 0;
}
DLLEXPORT int TakeUint8(unsigned char x) {
if (x == 0xFE) return 10;
return 0;
}
DLLEXPORT int TakeUint16(unsigned short x) {
if (x == 0xFFFE) return 11;
return 0;
}
DLLEXPORT int TakeUint32(unsigned int x) {
if (x == 0xFFFFFFFE) return 12;
return 0;
}
DLLEXPORT int TakeSizeT(size_t x) {
if (x == 42) return 13;
return 0;
}
DLLEXPORT int TakeSSizeT(ssize_t x) {
if (x == -42) return 14;
return 0;
}