can return user defined types in lambdas called by ffi

This commit is contained in:
Erik Svedäng 2016-03-17 21:12:25 +01:00
parent 50ef7a3ef8
commit d8d6933d52
2 changed files with 7 additions and 2 deletions

View File

@ -170,6 +170,8 @@
"-framework OpenGL -framework Cocoa -framework IOKit"))
(def out-dir (str carp-dir "out/"))
(def exe-out-dir "./")
(def exe-name "exe")
(def echo-signature-after-bake false)
(defn remove-non-user-defined-deps (func-deps)
@ -228,7 +230,7 @@
(defn run-clang [c-func-name c-file-name total-dependencies exe]
(let [clang-command (str "clang -DAPI= "
(if exe
(str "-o " out-dir "exe ")
(str "-o " exe-out-dir exe-name " ")
(str "-shared -g -o " out-dir c-func-name ".so "))
c-file-name " "
(include-paths) " "

View File

@ -396,7 +396,10 @@ void call_lambda_from_ffi(ffi_cif *cif, void *ret, void* args[], LambdaAndItsTyp
}
else {
set_error("Calling lambda from FFI can't handle return type ", lambda_return_type);
//set_error("Calling lambda from FFI can't handle return type ", lambda_return_type);
assert_or_set_error(result->tag == 'Q', "Invalid type of return value ", result);
void **p = ret;
*p = result->void_ptr;
}
/* for(int i = 0; i < arg_count; i++) { */