Skip to content

Commit 171faab

Browse files
committed
WIP (Mark "outer" data with collection kind)
1 parent 0252cac commit 171faab

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lib/msgpax/unpacker.ex

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ defmodule Msgpax.Unpacker do
133133
options = Macro.var(:options, nil)
134134
outer = Macro.var(:outer, nil)
135135
defp unpack_list(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length) when index < length do
136-
outer = [{index, length} | outer]
136+
outer = [:list, index, length | outer]
137137
unquote(pipe(rest, pipe(result, pipe(options, pipe(outer, call, 0), 0), 0), 0))
138138
end
139139
end
@@ -143,12 +143,12 @@ defmodule Msgpax.Unpacker do
143143
end
144144

145145
defp unpack_map(<<buffer::bits>>, result, options, outer, length) do
146-
unpack_map(buffer, result, options, outer, 0, length * 2, :key)
146+
unpack_map(buffer, result, options, outer, 0, length * 2)
147147
end
148148

149149
for {format, {:value, value}} <- formats do
150-
defp unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length, type) when index < length do
151-
unpack_map(rest, [unquote(value) | result], options, outer, index + 1, length, type)
150+
defp unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length) when index < length do
151+
unpack_map(rest, [unquote(value) | result], options, outer, index + 1, length)
152152
end
153153
end
154154

@@ -157,13 +157,13 @@ defmodule Msgpax.Unpacker do
157157
result = Macro.var(:result, nil)
158158
options = Macro.var(:options, nil)
159159
outer = Macro.var(:outer, nil)
160-
defp unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length, type) when index < length do
161-
outer = [{index, length, type} | outer]
160+
defp unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length) when index < length do
161+
outer = [:map, index, length | outer]
162162
unquote(pipe(rest, pipe(result, pipe(options, pipe(outer, call, 0), 0), 0), 0))
163163
end
164164
end
165165

166-
defp unpack_map(<<buffer::bits>>, result, options, outer, count, count, :key) do
166+
defp unpack_map(<<buffer::bits>>, result, options, outer, count, count) do
167167
unpack_continue(buffer, build_map(result, [], count), options, outer)
168168
end
169169

@@ -188,12 +188,12 @@ defmodule Msgpax.Unpacker do
188188
Msgpax.Ext.new(type, data)
189189
end
190190

191-
defp unpack_continue(<<buffer::bits>>, result, options, [{index, length} | outer]) do
191+
defp unpack_continue(<<buffer::bits>>, result, options, [:list, index, length | outer]) do
192192
unpack_list(buffer, result, options, outer, index + 1, length)
193193
end
194194

195-
defp unpack_continue(<<buffer::bits>>, result, options, [{index, length, type} | outer]) do
196-
unpack_map(buffer, result, options, outer, index + 1, length, type)
195+
defp unpack_continue(<<buffer::bits>>, result, options, [:map, index, length | outer]) do
196+
unpack_map(buffer, result, options, outer, index + 1, length)
197197
end
198198

199199
defp unpack_continue(<<buffer::bits>>, result, options, []) do

0 commit comments

Comments
 (0)