11export EpisodesBuffer, PartialNamedTuple
22import DataStructures. CircularBuffer
3+ using ElasticArrays: ElasticArray, ElasticVector
34
45"""
56 EpisodesBuffer(traces::AbstractTraces)
@@ -68,12 +69,20 @@ function EpisodesBuffer(traces::AbstractTraces)
6869 end
6970end
7071
71- Base. getindex (es:: EpisodesBuffer , idx... ) = getindex (es. traces, idx... )
72- Base. setindex! (es:: EpisodesBuffer , idx... ) = setindex! (es. traces, idx... )
73- Base. size (es:: EpisodesBuffer ) = size (es. traces)
74- Base. length (es:: EpisodesBuffer ) = length (es. traces)
75- Base. keys (es:: EpisodesBuffer ) = keys (es. traces)
76- Base. keys (es:: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = keys (es. traces. traces)
72+ function Base. getindex (es:: EpisodesBuffer , idx:: Int... )
73+ @boundscheck all (es. sampleable_inds[idx... ])
74+ getindex (es. traces, idx... )
75+ end
76+
77+ function Base. getindex (es:: EpisodesBuffer , idx... )
78+ getindex (es. traces, idx... )
79+ end
80+
81+ Base. setindex! (eb:: EpisodesBuffer , idx... ) = setindex! (eb. traces, idx... )
82+ Base. size (eb:: EpisodesBuffer ) = size (eb. traces)
83+ Base. length (eb:: EpisodesBuffer ) = length (eb. traces)
84+ Base. keys (eb:: EpisodesBuffer ) = keys (eb. traces)
85+ Base. keys (eb:: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = keys (eb. traces. traces)
7786function Base. show (io:: IO , m:: MIME"text/plain" , eb:: EpisodesBuffer{names} ) where {names}
7887 s = nameof (typeof (eb))
7988 t = eb. traces
@@ -82,14 +91,16 @@ function Base.show(io::IO, m::MIME"text/plain", eb::EpisodesBuffer{names}) where
8291end
8392
8493ispartial_insert (traces:: Traces , xs) = length (xs) < length (traces. traces) # this is the number of traces it contains not the number of steps.
85- ispartial_insert (es :: EpisodesBuffer , xs) = ispartial_insert (es . traces, xs)
94+ ispartial_insert (eb :: EpisodesBuffer , xs) = ispartial_insert (eb . traces, xs)
8695ispartial_insert (traces:: CircularPrioritizedTraces , xs) = ispartial_insert (traces. traces, xs)
8796
8897function pad! (trace:: Trace )
8998 pad! (trace. parent)
9099 return nothing
91100end
92101
102+ pad! (vect:: ElasticArray{T, Vector{T}} ) where {T} = push! (vect, zero (T))
103+ pad! (vect:: ElasticVector{T, Vector{T}} ) where {T} = push! (vect, zero (T))
93104pad! (buf:: CircularArrayBuffer{T,N,A} ) where {T,N,A} = push! (buf, zero (T))
94105pad! (vect:: Vector{T} ) where {T} = push! (vect, zero (T))
95106
@@ -123,9 +134,9 @@ pad!(vect::Vector{T}) where {T} = push!(vect, zero(T))
123134 return :($ ex)
124135end
125136
126- fill_multiplex (es :: EpisodesBuffer ) = fill_multiplex (es . traces)
137+ fill_multiplex (eb :: EpisodesBuffer ) = fill_multiplex (eb . traces)
127138
128- fill_multiplex (es :: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = fill_multiplex (es . traces. traces)
139+ fill_multiplex (eb :: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = fill_multiplex (eb . traces. traces)
129140
130141function Base. push! (eb:: EpisodesBuffer , xs:: NamedTuple )
131142 push! (eb. traces, xs)
@@ -162,17 +173,17 @@ function Base.push!(eb::EpisodesBuffer, xs::PartialNamedTuple) #wrap a NamedTupl
162173end
163174
164175for f in (:pop! , :popfirst! )
165- @eval function Base. $f (es :: EpisodesBuffer )
166- $ f (es . episodes_lengths)
167- $ f (es . sampleable_inds)
168- $ f (es . step_numbers)
169- $ f (es . traces)
176+ @eval function Base. $f (eb :: EpisodesBuffer )
177+ $ f (eb . episodes_lengths)
178+ $ f (eb . sampleable_inds)
179+ $ f (eb . step_numbers)
180+ $ f (eb . traces)
170181 end
171182end
172183
173- function Base. empty! (es :: EpisodesBuffer )
174- empty! (es . traces)
175- empty! (es . episodes_lengths)
176- empty! (es . sampleable_inds)
177- empty! (es . step_numbers)
184+ function Base. empty! (eb :: EpisodesBuffer )
185+ empty! (eb . traces)
186+ empty! (eb . episodes_lengths)
187+ empty! (eb . sampleable_inds)
188+ empty! (eb . step_numbers)
178189end
0 commit comments