static ffi_type * go_array_to_ffi (const struct __go_array_type *descriptor) { ffi_type *ret; uintptr_t len; ffi_type *element; uintptr_t i; ret = (ffi_type *) __go_alloc (sizeof (ffi_type)); ret->type = FFI_TYPE_STRUCT; len = descriptor->__len; if (len == 0) { /* The libffi library won't accept an empty struct. */ ret->elements = (ffi_type **) __go_alloc (2 * sizeof (ffi_type *)); ret->elements[0] = &ffi_type_void; ret->elements[1] = NULL; return ret; } ret->elements = (ffi_type **) __go_alloc ((len + 1) * sizeof (ffi_type *)); element = go_type_to_ffi (descriptor->__element_type); for (i = 0; i < len; ++i) ret->elements[i] = element; ret->elements[len] = NULL; return ret; }
static ffi_type * go_array_to_ffi (const struct __go_array_type *descriptor) { ffi_type *ret; uintptr_t len; ffi_type *element; uintptr_t i; ret = (ffi_type *) __go_alloc (sizeof (ffi_type)); ret->type = FFI_TYPE_STRUCT; len = descriptor->__len; ret->elements = (ffi_type **) __go_alloc ((len + 1) * sizeof (ffi_type *)); element = go_type_to_ffi (descriptor->__element_type); for (i = 0; i < len; ++i) ret->elements[i] = element; ret->elements[len] = NULL; return ret; }