diff --git a/src/containers/fixed_blocks.jl b/src/containers/fixed_blocks.jl index eaaaabeafd7331a990d476c2a60cc62122424b9f..3e79370dc2db69a08a555da37198bf2cd35926ad 100644 --- a/src/containers/fixed_blocks.jl +++ b/src/containers/fixed_blocks.jl @@ -1,7 +1,7 @@ module FixedBlocks -import ...BuildingBlocks: ContainerBlock +import ...BuildingBlocks: BuildingBlock, ContainerBlock import ...Gradients: FixedGradient import ...Pulses: FixedPulse import ...Variables: duration, variables @@ -44,11 +44,30 @@ struct FixedBlock <: ContainerBlock end end +Base.getindex(fb::FixedBlock, index::Symbol) = fb[Val(index)] +Base.getindex(fb::FixedBlock, ::Val{:pulse}) = fb.pulse +Base.getindex(fb::FixedBlock, ::Val{:gradient}) = fb.gradient + duration(fb::FixedBlock) = fb.duration variables(::Type{<:FixedBlock}) = [] fixed(wb::WaitBlock) = FixedBlock(value(duration(wb))) +start_time(fb::FixedBlock, index::Symbol) = start_time(fb, Val(index)) +start_time(fb::FixedBlock, ::Val{:pulse}) = fb.pulse_delay +start_time(fb::FixedBlock, ::Val{:gradient}) = fb.gradient_delay + +function get_children_blocks(fb::FixedBlock) + res = Tuple{Symbol, BuildingBlock}[] + if !isnothing(fb.pulse) + push!((:pulse, fb.pulse)) + end + if !isnothing(fb. gradient) + push!((:gradient, fb.gradient)) + end + return res +end + end \ No newline at end of file