mirror of
https://github.com/carp-lang/Carp.git
synced 2024-10-11 20:49:05 +03:00
can return user defined types in lambdas called by ffi
This commit is contained in:
parent
50ef7a3ef8
commit
d8d6933d52
@ -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) " "
|
||||
|
@ -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++) { */
|
||||
|
Loading…
Reference in New Issue
Block a user