Skip to content

Commit 28947f9

Browse files
committed
WIP (Use bits tail instad of bytes)
1 parent 78aa57f commit 28947f9

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

lib/msgpax/unpacker.ex

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,20 @@ defmodule Msgpax.Unpacker do
8484
import Macro, only: [pipe: 3]
8585

8686
for {format, {:value, value}} <- formats do
87-
def unpack(<<unquote_splicing(format), rest::bytes>>, [], options) do
87+
def unpack(<<unquote_splicing(format), rest::bits>>, [], options) do
8888
unpack(rest, [unquote(value)], options)
8989
end
9090
end
9191

9292
for {format, {:call, call}} <- formats do
9393
rest = Macro.var(:rest, nil)
9494
options = Macro.var(:options, nil)
95-
def unpack(<<unquote_splicing(format), rest::bytes>>, [], options) do
95+
def unpack(<<unquote_splicing(format), rest::bits>>, [], options) do
9696
unquote(pipe(rest, pipe([], pipe(options, pipe([], call, 0), 0), 0), 0))
9797
end
9898
end
9999

100-
def unpack(<<byte, _::bytes>>, [], _options) do
100+
def unpack(<<byte, _::bits>>, [], _options) do
101101
throw {:bad_format, byte}
102102
end
103103

@@ -109,25 +109,25 @@ defmodule Msgpax.Unpacker do
109109
{value, buffer}
110110
end
111111

112-
defp unpack_binary(<<buffer::bytes>>, result, %{binary: true} = options, outer, value) do
112+
defp unpack_binary(<<buffer::bits>>, result, %{binary: true} = options, outer, value) do
113113
unpack_continue(buffer, [Msgpax.Bin.new(value) | result], options, outer)
114114
end
115115

116-
defp unpack_binary(<<buffer::bytes>>, result, options, outer, value) do
116+
defp unpack_binary(<<buffer::bits>>, result, options, outer, value) do
117117
unpack_continue(buffer, [value | result], options, outer)
118118
end
119119

120-
def unpack_list(<<buffer::bytes>>, result, options, outer, length) do
120+
def unpack_list(<<buffer::bits>>, result, options, outer, length) do
121121
unpack_list(buffer, result, options, outer, 0, length)
122122
end
123123

124-
def unpack_list(<<buffer::bytes>>, result, options, outer, count, count) do
124+
def unpack_list(<<buffer::bits>>, result, options, outer, count, count) do
125125
{value, rest} = Enum.split(result, count)
126126
unpack_continue(buffer, [:lists.reverse(value) | rest], options, outer)
127127
end
128128

129129
for {format, {:value, value}} <- formats do
130-
def unpack_list(<<unquote_splicing(format), rest::bytes>>, result, options, outer, index, length) do
130+
def unpack_list(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length) do
131131
unpack_list(rest, [unquote(value) | result], options, outer, index + 1, length)
132132
end
133133
end
@@ -137,27 +137,27 @@ defmodule Msgpax.Unpacker do
137137
result = Macro.var(:result, nil)
138138
options = Macro.var(:options, nil)
139139
outer = Macro.var(:outer, nil)
140-
def unpack_list(<<unquote_splicing(format), rest::bytes>>, result, options, outer, index, length) do
140+
def unpack_list(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length) do
141141
outer = [{index, length} | outer]
142142
unquote(pipe(rest, pipe(result, pipe(options, pipe(outer, call, 0), 0), 0), 0))
143143
end
144144
end
145145

146-
def unpack_map(<<buffer::bytes>>, result, options, outer, length) do
146+
def unpack_map(<<buffer::bits>>, result, options, outer, length) do
147147
unpack_map(buffer, result, options, outer, 0, length, :key)
148148
end
149149

150-
def unpack_map(<<buffer::bytes>>, result, options, outer, count, count, :key) do
150+
def unpack_map(<<buffer::bits>>, result, options, outer, count, count, :key) do
151151
{value, rest} = Enum.split(result, count)
152152
unpack_continue(buffer, [:maps.from_list(value) | rest], options, outer)
153153
end
154154

155155
for {format, {:value, value}} <- formats do
156-
def unpack_map(<<unquote_splicing(format), rest::bytes>>, result, options, outer, index, length, :key) do
156+
def unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length, :key) do
157157
unpack_map(rest, [unquote(value) | result], options, outer, index, length, :value)
158158
end
159159

160-
def unpack_map(<<unquote_splicing(format), rest::bytes>>, [key | result], options, outer, index, length, :value) do
160+
def unpack_map(<<unquote_splicing(format), rest::bits>>, [key | result], options, outer, index, length, :value) do
161161
unpack_map(rest, [{key, unquote(value)} | result], options, outer, index + 1, length, :key)
162162
end
163163
end
@@ -167,13 +167,13 @@ defmodule Msgpax.Unpacker do
167167
result = Macro.var(:result, nil)
168168
options = Macro.var(:options, nil)
169169
outer = Macro.var(:outer, nil)
170-
def unpack_map(<<unquote_splicing(format), rest::bytes>>, result, options, outer, index, length, type) do
170+
def unpack_map(<<unquote_splicing(format), rest::bits>>, result, options, outer, index, length, type) do
171171
outer = [{index, length, type} | outer]
172172
unquote(pipe(rest, pipe(result, pipe(options, pipe(outer, call, 0), 0), 0), 0))
173173
end
174174
end
175175

176-
defp unpack_ext(<<buffer::bytes>>, result, options, outer, type, data) do
176+
defp unpack_ext(<<buffer::bits>>, result, options, outer, type, data) do
177177
if type in 0..127 do
178178
unpack_continue(buffer, [unpack_ext(type, data, options) | result], options, outer)
179179
else
@@ -194,19 +194,19 @@ defmodule Msgpax.Unpacker do
194194
Msgpax.Ext.new(type, data)
195195
end
196196

197-
def unpack_continue(<<buffer::bytes>>, result, options, [{index, length} | outer]) do
197+
def unpack_continue(<<buffer::bits>>, result, options, [{index, length} | outer]) do
198198
unpack_list(buffer, result, options, outer, index + 1, length)
199199
end
200200

201-
def unpack_continue(<<buffer::bytes>>, result, options, [{index, length, :key} | outer]) do
201+
def unpack_continue(<<buffer::bits>>, result, options, [{index, length, :key} | outer]) do
202202
unpack_map(buffer, result, options, outer, index, length, :value)
203203
end
204204

205-
def unpack_continue(<<buffer::bytes>>, [{value, key} | result], options, [{index, length, :value} | outer]) do
205+
def unpack_continue(<<buffer::bits>>, [{value, key} | result], options, [{index, length, :value} | outer]) do
206206
unpack_map(buffer, [{key, value} | result], options, outer, index + 1, length, :key)
207207
end
208208

209-
def unpack_continue(<<buffer::bytes>>, result, options, []) do
209+
def unpack_continue(<<buffer::bits>>, result, options, []) do
210210
unpack(buffer, result, options)
211211
end
212212
end

0 commit comments

Comments
 (0)