wip
This commit is contained in:
parent
9344b38494
commit
2761f73b0d
2 changed files with 43 additions and 26 deletions
2
sci
2
sci
|
|
@ -1 +1 @@
|
||||||
Subproject commit c9081df5788f6336108bd530e0aa7da3d42d42bb
|
Subproject commit 79ae49faaedadfb4572b144b4f50744146416d48
|
||||||
|
|
@ -9,13 +9,25 @@
|
||||||
"Generates pre-compiled reify combinations"
|
"Generates pre-compiled reify combinations"
|
||||||
[methods]
|
[methods]
|
||||||
(let [subsets (rest (combo/subsets (seq methods)))]
|
(let [subsets (rest (combo/subsets (seq methods)))]
|
||||||
(reduce (fn [opts classes]
|
(reduce (fn [opts [classes protocols?]]
|
||||||
|
(let [prelude '[reify]
|
||||||
|
prelude (if protocols?
|
||||||
|
(conj prelude
|
||||||
|
'sci.impl.types.IReified
|
||||||
|
'(getInterfaces [this]
|
||||||
|
interfaces)
|
||||||
|
'(getMethods [this]
|
||||||
|
methods)
|
||||||
|
'(getProtocols [this]
|
||||||
|
protocols))
|
||||||
|
prelude)]
|
||||||
(assoc opts
|
(assoc opts
|
||||||
(set (map (fn [[class _]]
|
(cond-> (set (map #(list 'quote %)
|
||||||
(list 'quote class))
|
|
||||||
classes))
|
classes))
|
||||||
(list 'fn ['methods]
|
protocols?
|
||||||
(list* 'reify
|
(conj (list 'quote 'sci.impl.IReified)))
|
||||||
|
(list 'fn ['interfaces 'methods 'protocols]
|
||||||
|
(concat prelude
|
||||||
(mapcat
|
(mapcat
|
||||||
(fn [[clazz methods]]
|
(fn [[clazz methods]]
|
||||||
(cons clazz
|
(cons clazz
|
||||||
|
|
@ -29,9 +41,16 @@
|
||||||
arity)))
|
arity)))
|
||||||
arities))
|
arities))
|
||||||
methods)))
|
methods)))
|
||||||
classes)))))
|
classes))))))
|
||||||
{}
|
{}
|
||||||
subsets)))
|
(concat (map (fn [subset bool]
|
||||||
|
[subset bool])
|
||||||
|
subsets
|
||||||
|
(repeat true))
|
||||||
|
(map (fn [subset bool]
|
||||||
|
[subset bool])
|
||||||
|
subsets
|
||||||
|
(repeat false))))))
|
||||||
|
|
||||||
#_(prn (macroexpand '(gen-reify-combos
|
#_(prn (macroexpand '(gen-reify-combos
|
||||||
{java.io.FileFilter {accept [[this f]]}})))
|
{java.io.FileFilter {accept [[this f]]}})))
|
||||||
|
|
@ -39,9 +58,7 @@
|
||||||
#_:clj-kondo/ignore
|
#_:clj-kondo/ignore
|
||||||
(def reify-opts
|
(def reify-opts
|
||||||
(gen-reify-combos
|
(gen-reify-combos
|
||||||
{sci.impl.types.IReified {getMethods [[this]]
|
{java.nio.file.FileVisitor {preVisitDirectory [[this p attrs]]
|
||||||
getInterfaces [[this]]}
|
|
||||||
java.nio.file.FileVisitor {preVisitDirectory [[this p attrs]]
|
|
||||||
postVisitDirectory [[this p attrs]]
|
postVisitDirectory [[this p attrs]]
|
||||||
visitFile [[this p attrs]]}
|
visitFile [[this p attrs]]}
|
||||||
java.io.FileFilter {accept [[this f]]}
|
java.io.FileFilter {accept [[this f]]}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue