Skip to content

Commit 56d2f95

Browse files
authored
Optimize valid integer values decode (#425)
1 parent 4c7b3e8 commit 56d2f95

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lib/protobuf/wire.ex

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,22 +153,42 @@ defmodule Protobuf.Wire do
153153

154154
def decode(:bytes, binary) when is_binary(binary), do: binary
155155

156+
def decode(:int32, val) when val in @sint32_range do
157+
val
158+
end
159+
156160
def decode(:int32, val) do
161+
# not an int32 value, requires roundtrip to convert to one
157162
<<n::signed-integer-32>> = <<val::32>>
158163
n
159164
end
160165

166+
def decode(:int64, val) when val in @sint64_range do
167+
val
168+
end
169+
161170
def decode(:int64, val) do
171+
# not an int64 value, requires roundtrip to convert to one
162172
<<n::signed-integer-64>> = <<val::64>>
163173
n
164174
end
165175

176+
def decode(:uint32, val) when val in @uint32_range do
177+
val
178+
end
179+
166180
def decode(:uint32, val) do
181+
# not an uint32 value, requires roundtrip to convert to one
167182
<<n::unsigned-integer-32>> = <<val::32>>
168183
n
169184
end
170185

186+
def decode(:uint64, val) when val in @uint64_range do
187+
val
188+
end
189+
171190
def decode(:uint64, val) do
191+
# not an uint64 value, requires roundtrip to convert to one
172192
<<n::unsigned-integer-64>> = <<val::64>>
173193
n
174194
end

0 commit comments

Comments
 (0)