Skip to content

Commit caa612a

Browse files
committed
add delete method for callbacks
1 parent 944ce50 commit caa612a

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

docs/src/API.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ has_callback
219219
get_callbacks(::NetworkDynamics.ComponentModel)
220220
set_callback!
221221
add_callback!
222+
delete_callbacks!
222223
```
223224

224225
## Sparsity Detection

src/NetworkDynamics.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export has_init, get_init, set_init!, delete_init!, strip_inits!
100100
export has_bounds, get_bounds, set_bounds!, delete_bounds!, strip_bounds!
101101
export has_graphelement, get_graphelement, set_graphelement!
102102
export get_initial_state, dump_initial_state, dump_state
103-
export has_callback, get_callbacks, set_callback!, add_callback!
103+
export has_callback, get_callbacks, set_callback!, add_callback!, delete_callbacks!
104104
export has_initconstraint, get_initconstraints, set_initconstraint!, add_initconstraint!, delete_initconstraints!
105105
export has_initformula, get_initformulas, set_initformula!, add_initformula!, delete_initformulas!
106106
export has_position, get_position, set_position!

src/metadata.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,20 @@ end
595595
add_callback!(nw::Network, idx::VCIndex, cb; kw...) = add_callback!(getcomp(nw, idx), cb; kw...)
596596
add_callback!(nw::Network, idx::ECIndex, cb; kw...) = add_callback!(getcomp(nw, idx), cb; kw...)
597597

598+
"""
599+
delete_callbacks!(c::ComponentModel)
600+
delete_callbacks!(nw::Network, idx::Union{VIndex,EIndex})
601+
602+
Removes all callback functions from the component model,
603+
or from a component referenced by `idx` in a network.
604+
Returns `true` if callbacks existed and were removed, `false` otherwise.
605+
606+
See also: [`set_callback!`](@ref), [`add_callback!`](@ref).
607+
"""
608+
delete_callbacks!(c::ComponentModel) = delete_metadata!(c, :callback)
609+
delete_callbacks!(nw::Network, idx::VCIndex) = delete_callbacks!(getcomp(nw, idx))
610+
delete_callbacks!(nw::Network, idx::ECIndex) = delete_callbacks!(getcomp(nw, idx))
611+
598612
####
599613
#### Init constraints
600614
####

test/callbacks_test.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ end
131131
affect = ComponentAffect(empty_function, [],[])
132132
cb3 = ContinuousComponentCallback(cond, affect; affect_neg! = nothing)
133133
show(stdout, MIME"text/plain"(), cb3)
134+
135+
# test delete
136+
@test delete_callbacks!(v)
137+
@test !has_callback(v)
138+
@test !delete_callbacks!(v)
134139
end
135140

136141
@testset "vector callbacks" begin

0 commit comments

Comments
 (0)