+
+ return psi_ffi_token_type(real->type);
+}
+
+static inline ffi_type *psi_ffi_decl_func_array_type(struct psi_decl *fn) {
+ struct psi_ffi_decl_info *info = fn->info;
+ struct psi_ffi_struct_element_storage s = {0};
+ struct psi_layout l;
+ size_t i;
+
+ s.last_arg_pos = -1;
+ s.argc = fn->func->var->array_size;
+ s.els = calloc(s.argc + 1, sizeof(*s.els));
+
+ assert(!fn->func->layout);
+ l.pos = 0;
+ l.len = psi_decl_arg_get_size(fn->func);
+
+ fn->func->layout = &l;
+ psi_ffi_struct_type_element(&s, fn->func);
+ fn->func->layout = NULL;
+
+ info->rv_array = calloc(1, sizeof(ffi_type));
+ info->rv_array->type = FFI_TYPE_STRUCT;
+ info->rv_array->size = 0;
+ info->rv_array->elements = s.els;
+
+ return info->rv_array;