@@ -90,31 +90,40 @@ function pad!(trace::Trace)
9090 return nothing
9191end
9292
93- pad! (buf:: CircularVectorBuffer ) = pad ! (buf. buffer )
93+ pad! (buf:: CircularVectorBuffer{T} ) where {T} = push ! (buf, zero (T) )
9494pad! (vect:: Vector{T} ) where {T} = push! (vect, zero (T))
9595
9696# push a duplicate of last element as a dummy element for all 'trace' objects, ignores multiplex traces, should never be sampled.
9797@generated function fill_multiplex (trace_tuple:: Traces{names,Trs,N,E} ) where {names,Trs,N,E}
98- i = 1
98+ traces_signature = Trs
9999 ex = :()
100- for tr in Trs. parameters
101- if ! (tr <: MultiplexTraces )
102- # push a duplicate of last element as a dummy element, should never be sampled.
103- ex = :($ ex; pad! (trace_tuple. traces[$ i]))
100+ i = 1
101+
102+ if traces_signature <: NamedTuple
103+ # Handle 'simple' (non-multiplexed) Traces
104+ for tr in traces_signature. parameters[1 ]
105+ ex = :($ ex; pad! (trace_tuple. traces[$ i])) # pad everything
106+ i += 1
104107 end
105- i += 1
108+ elseif traces_signature <: Tuple
109+ traces_signature = traces_signature. parameters
110+
111+
112+ for tr in traces_signature
113+ if ! (tr <: MultiplexTraces )
114+ # push a duplicate of last element as a dummy element, should never be sampled.
115+ ex = :($ ex; pad! (trace_tuple. traces[$ i]))
116+ end
117+ i += 1
118+ end
119+ else
120+ error (" Traces store is neither a tuple nor a named tuple!" )
106121 end
122+
107123 return :($ ex)
108124end
109125
110- # This function is currently unoptimized, could be optimized by using a generated function.
111- function fill_multiplex (es:: EpisodesBuffer )
112- for trace in es. traces. traces
113- if ! (trace isa MultiplexTraces)
114- push! (trace, last (trace)) # push a duplicate of last element as a dummy element, should never be sampled.
115- end
116- end
117- end
126+ fill_multiplex (es:: EpisodesBuffer ) = fill_multiplex (es. traces)
118127
119128fill_multiplex (es:: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = fill_multiplex (es. traces. traces)
120129
0 commit comments