Skip to content

Commit 710dff1

Browse files
authored
Remove internal checkmode macro (#184)
1 parent 3bf110a commit 710dff1

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

src/noop.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ Note that this method may return a wrong position when
5555
"""
5656
function Base.position(stream::NoopStream)
5757
mode = stream.state.mode
58-
@checkmode (:idle, :read, :write)
5958
if mode === :idle
6059
return Int64(0)
6160
elseif mode === :write
6261
return position(stream.stream) + buffersize(stream.buffer1)
6362
elseif mode === :read
6463
return position(stream.stream) - buffersize(stream.buffer1)
64+
else
65+
throw_invalid_mode(mode)
6566
end
6667
@assert false "unreachable"
6768
end
@@ -146,19 +147,18 @@ end
146147
function stats(stream::NoopStream)
147148
state = stream.state
148149
mode = state.mode
149-
@checkmode (:idle, :read, :write)
150150
buffer = stream.buffer1
151151
@assert buffer === stream.buffer2
152-
if mode == :idle
152+
if mode === :idle
153153
consumed = supplied = 0
154-
elseif mode == :read
154+
elseif mode === :read
155155
supplied = buffer.transcoded
156156
consumed = supplied - buffersize(buffer)
157-
elseif mode == :write
157+
elseif mode === :write
158158
supplied = buffer.transcoded + buffersize(buffer)
159159
consumed = buffer.transcoded
160160
else
161-
@assert false "unreachable"
161+
throw_invalid_mode(mode)
162162
end
163163
return Stats(consumed, supplied, supplied, supplied)
164164
end

src/stream.jl

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,8 @@ function splitkwargs(kwargs, keys)
154154
end
155155
@specialize
156156

157-
# Check that mode is valid.
158-
macro checkmode(validmodes)
159-
mode = esc(:mode)
160-
validmodes = Any[arg for arg in validmodes.args]
161-
quote
162-
if !$(foldr((x, y) -> :($(mode) === $x || $(y)), validmodes, init=false))
163-
throw(ArgumentError(string("invalid mode :", $(mode))))
164-
end
165-
end
166-
end
157+
# throw ArgumentError that mode is invalid.
158+
throw_invalid_mode(mode) = throw(ArgumentError(string("invalid mode :", mode)))
167159

168160

169161
# Base IO Functions
@@ -291,13 +283,14 @@ codec may change the length of data.
291283
"""
292284
function Base.position(stream::TranscodingStream)
293285
mode = stream.state.mode
294-
@checkmode (:idle, :read, :write)
295286
if mode === :idle
296287
return Int64(0)
297288
elseif mode === :read
298289
return stats(stream).out
299290
elseif mode === :write
300291
return stats(stream).in
292+
else
293+
throw_invalid_mode(mode)
301294
end
302295
@assert false "unreachable"
303296
end
@@ -308,23 +301,27 @@ end
308301

309302
function Base.seekstart(stream::TranscodingStream)
310303
mode = stream.state.mode
311-
@checkmode (:idle, :read)
312-
if mode == :read
304+
if mode === :read
313305
callstartproc(stream, mode)
314306
emptybuffer!(stream.buffer1)
315307
emptybuffer!(stream.buffer2)
308+
elseif mode === :idle
309+
else
310+
throw_invalid_mode(mode)
316311
end
317312
seekstart(stream.stream)
318313
return stream
319314
end
320315

321316
function Base.seekend(stream::TranscodingStream)
322317
mode = stream.state.mode
323-
@checkmode (:idle, :read)
324318
if mode == :read
325319
callstartproc(stream, mode)
326320
emptybuffer!(stream.buffer1)
327321
emptybuffer!(stream.buffer2)
322+
elseif mode === :idle
323+
else
324+
throw_invalid_mode(mode)
328325
end
329326
seekend(stream.stream)
330327
return stream
@@ -578,23 +575,22 @@ Create an I/O statistics object of `stream`.
578575
function stats(stream::TranscodingStream)
579576
state = stream.state
580577
mode = state.mode
581-
@checkmode (:idle, :read, :write)
582578
buffer1 = stream.buffer1
583579
buffer2 = stream.buffer2
584-
if mode == :idle
580+
if mode === :idle
585581
transcoded_in = transcoded_out = in = out = 0
586-
elseif mode == :read
582+
elseif mode === :read
587583
transcoded_in = buffer2.transcoded
588584
transcoded_out = buffer1.transcoded
589585
in = transcoded_in + buffersize(buffer2)
590586
out = transcoded_out - buffersize(buffer1)
591-
elseif mode == :write
587+
elseif mode === :write
592588
transcoded_in = buffer1.transcoded
593589
transcoded_out = buffer2.transcoded
594590
in = transcoded_in + buffersize(buffer1)
595591
out = transcoded_out - buffersize(buffer2)
596592
else
597-
@assert false "unreachable"
593+
throw_invalid_mode(mode)
598594
end
599595
return Stats(in, out, transcoded_in, transcoded_out)
600596
end

test/codecnoop.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,8 @@
343343
end
344344
@test position(stream) == position(sink) == position(iob)
345345
close(stream)
346+
@test_throws ArgumentError position(stream)
347+
@test_throws ArgumentError TranscodingStreams.stats(stream)
346348
close(iob)
347349

348350
mktemp() do path, sink

test/codecquadruple.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ end
9595
@test position(stream) == position(iob)
9696
end
9797
close(stream)
98+
@test_throws ArgumentError position(stream)
99+
@test_throws ArgumentError TranscodingStreams.stats(stream)
98100
close(iob)
99101

100102
mktemp() do path, sink

0 commit comments

Comments
 (0)