Skip to content

Commit d224c14

Browse files
committed
add range getindex for Buffer
1 parent 26fcb98 commit d224c14

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/buffer.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ function Base.checkbounds(buf::Buffer, i::Integer)
4747
end
4848
end
4949

50+
function Base.getindex(buf::Buffer, r::UnitRange{<:Integer})
51+
@boundscheck checkbounds(buf, r)
52+
@inbounds return buf.data[r+buf.bufferpos-1]
53+
end
54+
55+
function Base.checkbounds(buf::Buffer, r::UnitRange{<:Integer})
56+
if !isempty(r) && !(1 first(r) && last(r) endof(buf))
57+
throw(BoundsError(buf, r))
58+
end
59+
end
60+
5061
function bufferptr(buf::Buffer)
5162
return pointer(buf.data, buf.bufferpos)
5263
end

test/runtests.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@ using Base.Test
6464
@test endof(s.state.buffer1) == 2
6565
@test s.state.buffer1[1] === UInt8('a')
6666
@test s.state.buffer1[2] === UInt8('z')
67+
@test s.state.buffer1[1:2] == b"az"
6768
@test_throws BoundsError s.state.buffer1[0]
6869
@test_throws BoundsError s.state.buffer1[3]
70+
@test_throws BoundsError s.state.buffer1[3:4]
6971
end
7072

7173
Pkg.test("CodecZlib")

0 commit comments

Comments
 (0)