From daa1949f3209d3a90d95cc6b7758a80e726c210e Mon Sep 17 00:00:00 2001 From: Joshua Suskalo Date: Thu, 30 Sep 2021 15:45:10 -0500 Subject: [PATCH] Add address metadata key to defcfn as well --- CHANGELOG.md | 2 +- src/clj/coffi/ffi.clj | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f363c2..007bd61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This change ## [Unreleased] ### Added -- An `::ffi/address` key to deserialized function pointers' metadata +- An `::ffi/address` key to wrapper functions' metadata ## [0.1.184] - 2021-09-30 ### Fixed diff --git a/src/clj/coffi/ffi.clj b/src/clj/coffi/ffi.clj index fed0b1b..6fa1e32 100644 --- a/src/clj/coffi/ffi.clj +++ b/src/clj/coffi/ffi.clj @@ -545,6 +545,7 @@ (let [args (s/conform ::defcfn-args args) args-types (gensym "args-types") ret-type (gensym "ret-type") + address (gensym "symbol") invoke (gensym "invoke") native-sym (gensym "native") [arity fn-tail] (-> args :wrapper :fn-tail) @@ -558,7 +559,8 @@ nil))] `(let [~args-types ~(:native-arglist args) ~ret-type ~(:return-type args) - ~invoke (make-downcall ~(name (:symbol args)) ~args-types ~ret-type) + ~address (find-symbol ~(name (:symbol args))) + ~invoke (make-downcall ~address ~args-types ~ret-type) ~(or (-> args :wrapper :native-fn) native-sym) ~(if (and (every? #(= % (mem/primitive-type %)) (:native-arglist args)) @@ -581,7 +583,8 @@ (list (mapv (comp symbol name) (:native-arglist args))))))) - (:attr-map args))) + (assoc (:attr-map args) + ::address address))) ~@(when-let [doc (:doc args)] (list doc)) fun#))))