@@ -31,13 +31,6 @@ function flatten_expr!(x)
3131 x
3232end
3333
34- mk_function (args, kwargs, body) =
35- let Args = args |> GeneralizedGenerated. expr2typelevel,
36- Kwargs = kwargs |> GeneralizedGenerated. expr2typelevel,
37- Body = body |> GeneralizedGenerated. expr2typelevel
38- GeneralizedGenerated. RuntimeFn {Args, Kwargs, Body} ()
39- end
40-
4134function build_function (rhss, vs, ps = (), args = (), conv = simplified_expr, expression = Val{true }; constructor= nothing )
4235 _vs = map (x-> x isa Operation ? x. op : x, vs)
4336 _ps = map (x-> x isa Operation ? x. op : x, ps)
@@ -58,22 +51,30 @@ function build_function(rhss, vs, ps = (), args = (), conv = simplified_expr, ex
5851
5952 fargs = ps == () ? :(u,$ (args... )) : :(u,p,$ (args... ))
6053
54+ oop_ex = :(
55+ function $fname ($ (fargs. args... ))
56+ X = $ let_expr
57+ T = promote_type (map (typeof,X)... )
58+ convert .(T,X)
59+ construct = $ (constructor === nothing ? :(u isa ModelingToolkit. StaticArrays. StaticArray ? ModelingToolkit. StaticArrays. similar_type (typeof (u), eltype (X)) : x-> (du= similar (u, T, $ (size (rhss)... )); vec (du) .= x; du)) : constructor)
60+ construct (X)
61+ end
62+ )
63+
64+ iip_ex = :(
65+ function $fname ($ X,$ (fargs. args... ))
66+ $ ip_let_expr
67+ nothing
68+ end
69+ )
70+
6171 if expression == Val{true }
6272 return quote
63- function $fname ($ X,$ (fargs. args... ))
64- $ ip_let_expr
65- nothing
66- end
67- function $fname ($ (fargs. args... ))
68- X = $ let_expr
69- T = promote_type (map (typeof,X)... )
70- convert .(T,X)
71- construct = $ (constructor === nothing ? :(u isa ModelingToolkit. StaticArrays. StaticArray ? ModelingToolkit. StaticArrays. similar_type (typeof (u), eltype (X)) : x-> (du= similar (u, T, $ (size (rhss)... )); vec (du) .= x; du)) : constructor)
72- construct (X)
73- end
73+ $ oop_ex
74+ $ iip_ex
7475 end
7576 else
76- return mk_function (fargs,:(),let_expr), mk_function (:( $ X, $ (fargs . args ... )),:(),ip_let_expr )
77+ return GeneralizedGenerated . mk_function (oop_ex), GeneralizedGenerated . mk_function (iip_ex )
7778 end
7879end
7980
0 commit comments