Skip to content

Commit e49ec67

Browse files
feat: add extra_assignments to build_function_wrapper
1 parent 80136d9 commit e49ec67

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/systems/codegen_utils.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,12 @@ generated functions, and `args` are the arguments.
108108
code for `expr`.
109109
- `wrap_mtkparameters`: Whether to collapse parameter buffers for a split system into a
110110
argument.
111+
- `extra_assignments`: Extra `Assignment` statements to prefix to `expr`, after all other
112+
assignments.
111113
112114
All other keyword arguments are forwarded to `build_function`.
113115
"""
114-
function build_function_wrapper(sys::AbstractSystem, expr, args...; p_start = 2, p_end = is_time_dependent(sys) ? length(args) - 1 : length(args), wrap_delays = is_dde(sys), wrap_code = identity, add_observed = true, filter_observed = Returns(true), create_bindings = true, output_type = nothing, mkarray = nothing, wrap_mtkparameters = true, kwargs...)
116+
function build_function_wrapper(sys::AbstractSystem, expr, args...; p_start = 2, p_end = is_time_dependent(sys) ? length(args) - 1 : length(args), wrap_delays = is_dde(sys), wrap_code = identity, add_observed = true, filter_observed = Returns(true), create_bindings = true, output_type = nothing, mkarray = nothing, wrap_mtkparameters = true, extra_assignments = Assignment[], kwargs...)
115117
isscalar = !(expr isa AbstractArray || symbolic_type(expr) == ArraySymbolic())
116118
# filter observed equations
117119
obs = filter(filter_observed, observed(sys))
@@ -151,6 +153,7 @@ function build_function_wrapper(sys::AbstractSystem, expr, args...; p_start = 2,
151153
for eq in Iterators.flatten((cmap, pdeps[pdepidxs], obs[obsidxs]))
152154
push!(assignments, eq.lhs eq.rhs)
153155
end
156+
append!(assignments, extra_assignments)
154157

155158
args = ntuple(Val(length(args))) do i
156159
arg = args[i]

0 commit comments

Comments
 (0)