Skip to content
Snippets Groups Projects
delayed_events.jl 621 B
module DelayedEvents
import ..AbstractTypes: EventComponent, ReadoutComponent, RFPulseComponent
import ...Variables: VariableType, get_free_variable, get_pulse, get_readout

struct DelayedEvent{T<:EventComponent} <: EventComponent
    event :: T
    delay :: VariableType
    function DelayedEvent(event::EventComponent, delay=nothing)
        new(event, get_free_variable(delay))
    end
end


effective_time(del::DelayedEvent) = effective_time(del.event) + del.delay

get_pulse(del::DelayedEvent{T}) where {T<:RFPulseComponent} = del.event
get_readout(del::DelayedEvent{T}) where {T<:ReadoutComponent} = del.event


end