@@ -15,6 +15,37 @@ macro tight_loop_macros(ex)
15
15
:($ (esc (ex)))
16
16
end
17
17
18
+ const oop_arglists = (Tuple{Vector{Float64}, Vector{Float64}, Float64},
19
+ Tuple{Vector{Float64}, SciMLBase. NullParameters, Float64})
20
+
21
+ const NORECOMPILE_OOP_SUPPORTED_ARGS = (Tuple{Vector{Float64},
22
+ Vector{Float64}, Float64},
23
+ Tuple{Vector{Float64},
24
+ SciMLBase. NullParameters, Float64})
25
+ const oop_returnlists = (Vector{Float64}, Vector{Float64})
26
+
27
+ function wrapfun_oop (ff, inputs = ())
28
+ if ! isempty (inputs)
29
+ IT = Tuple{map (typeof, inputs)... }
30
+ if IT ∉ NORECOMPILE_OOP_SUPPORTED_ARGS
31
+ throw (NoRecompileArgumentError (IT))
32
+ end
33
+ end
34
+ FunctionWrappersWrappers. FunctionWrappersWrapper (ff, oop_arglists,
35
+ oop_returnlists)
36
+ end
37
+
38
+ function wrapfun_iip (ff, inputs)
39
+ T = eltype (inputs[2 ])
40
+ iip_arglists = (Tuple{T1, T2, T3, T4},)
41
+ iip_returnlists = ntuple (x -> Nothing, 1 )
42
+
43
+ fwt = map (iip_arglists, iip_returnlists) do A, R
44
+ FunctionWrappersWrappers. FunctionWrappers. FunctionWrapper {R, A} (Void (ff))
45
+ end
46
+ FunctionWrappersWrappers. FunctionWrappersWrapper {typeof(fwt), false} (fwt)
47
+ end
48
+
18
49
# TODO : would be good to have dtmin a function of dt
19
50
function prob2dtmin (prob; use_end_time = true )
20
51
prob2dtmin (prob. tspan, oneunit (eltype (prob. tspan)), use_end_time)
0 commit comments