@@ -31,13 +31,6 @@ function flatten_expr!(x)
31
31
x
32
32
end
33
33
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
-
41
34
function build_function (rhss, vs, ps = (), args = (), conv = simplified_expr, expression = Val{true }; constructor= nothing )
42
35
_vs = map (x-> x isa Operation ? x. op : x, vs)
43
36
_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
58
51
59
52
fargs = ps == () ? :(u,$ (args... )) : :(u,p,$ (args... ))
60
53
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
+
61
71
if expression == Val{true }
62
72
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
74
75
end
75
76
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 )
77
78
end
78
79
end
79
80
0 commit comments