Add address metadata key to defcfn as well
This commit is contained in:
parent
5ab2bae1fa
commit
daa1949f32
2 changed files with 6 additions and 3 deletions
|
|
@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This change
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### Added
|
### Added
|
||||||
- An `::ffi/address` key to deserialized function pointers' metadata
|
- An `::ffi/address` key to wrapper functions' metadata
|
||||||
|
|
||||||
## [0.1.184] - 2021-09-30
|
## [0.1.184] - 2021-09-30
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
||||||
|
|
@ -545,6 +545,7 @@
|
||||||
(let [args (s/conform ::defcfn-args args)
|
(let [args (s/conform ::defcfn-args args)
|
||||||
args-types (gensym "args-types")
|
args-types (gensym "args-types")
|
||||||
ret-type (gensym "ret-type")
|
ret-type (gensym "ret-type")
|
||||||
|
address (gensym "symbol")
|
||||||
invoke (gensym "invoke")
|
invoke (gensym "invoke")
|
||||||
native-sym (gensym "native")
|
native-sym (gensym "native")
|
||||||
[arity fn-tail] (-> args :wrapper :fn-tail)
|
[arity fn-tail] (-> args :wrapper :fn-tail)
|
||||||
|
|
@ -558,7 +559,8 @@
|
||||||
nil))]
|
nil))]
|
||||||
`(let [~args-types ~(:native-arglist args)
|
`(let [~args-types ~(:native-arglist args)
|
||||||
~ret-type ~(:return-type 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)
|
~(or (-> args :wrapper :native-fn) native-sym)
|
||||||
~(if (and (every? #(= % (mem/primitive-type %))
|
~(if (and (every? #(= % (mem/primitive-type %))
|
||||||
(:native-arglist args))
|
(:native-arglist args))
|
||||||
|
|
@ -581,7 +583,8 @@
|
||||||
(list
|
(list
|
||||||
(mapv (comp symbol name)
|
(mapv (comp symbol name)
|
||||||
(:native-arglist args)))))))
|
(:native-arglist args)))))))
|
||||||
(:attr-map args)))
|
(assoc (:attr-map args)
|
||||||
|
::address address)))
|
||||||
~@(when-let [doc (:doc args)]
|
~@(when-let [doc (:doc args)]
|
||||||
(list doc))
|
(list doc))
|
||||||
fun#))))
|
fun#))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue