66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
#include "include/native.h"
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
struct Imported_Handle {
|
|
int value;
|
|
};
|
|
|
|
static struct Imported_Handle handle = {7};
|
|
|
|
int child_value(int value) {
|
|
return value;
|
|
}
|
|
|
|
int imported_add(imported_int left, int right) {
|
|
return left + right;
|
|
}
|
|
|
|
unsigned long imported_scalar(unsigned char value, unsigned long extra) {
|
|
return value + extra;
|
|
}
|
|
|
|
Imported_Handle *imported_handle(void) {
|
|
return &handle;
|
|
}
|
|
|
|
int imported_read(const Imported_Handle *value) {
|
|
return value->value;
|
|
}
|
|
|
|
int imported_string(const char *value) {
|
|
if (strcmp(value, "hello") != 0) {
|
|
abort();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int imported_variadic(int marker, ...) {
|
|
va_list args;
|
|
va_start(args, marker);
|
|
int narrow_signed = va_arg(args, int);
|
|
int narrow_unsigned = va_arg(args, int);
|
|
double float_value = va_arg(args, double);
|
|
double c_float_value = va_arg(args, double);
|
|
const unsigned char *pointer = va_arg(args, const unsigned char *);
|
|
const unsigned char *nullable = va_arg(args, const unsigned char *);
|
|
va_end(args);
|
|
if (!(marker == 7 &&
|
|
narrow_signed == -2 &&
|
|
narrow_unsigned == 3 &&
|
|
float_value == 4.0 &&
|
|
c_float_value == 5.0 &&
|
|
pointer[0] == 'o' &&
|
|
nullable == pointer)) {
|
|
abort();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
#ifdef BROLANG_FEATURE
|
|
int configured_value(int value) {
|
|
return value;
|
|
}
|
|
#endif
|