Get rid of size from varaint type representation.
This commit is contained in:
parent
1af6106eb4
commit
29630dab61
@ -581,7 +581,7 @@ deserialize_type(<<7, Rest/binary>>) ->
|
|||||||
{string, Rest};
|
{string, Rest};
|
||||||
deserialize_type(<<8, Size, Rest/binary>>) ->
|
deserialize_type(<<8, Size, Rest/binary>>) ->
|
||||||
{Variants, Rest2} = deserialize_variants(Size, Rest, []),
|
{Variants, Rest2} = deserialize_variants(Size, Rest, []),
|
||||||
{{variant, Size, Variants}, Rest2}.
|
{{variant, Variants}, Rest2}.
|
||||||
|
|
||||||
deserialize_variants(0, Rest, Variants) ->
|
deserialize_variants(0, Rest, Variants) ->
|
||||||
{lists:reverse(Variants), Rest};
|
{lists:reverse(Variants), Rest};
|
||||||
@ -783,17 +783,11 @@ to_type([{'{', _}, {id, _, "map"}, {',', _} | Rest]) ->
|
|||||||
to_type([{'{', _}
|
to_type([{'{', _}
|
||||||
, {id, _, "variant"}
|
, {id, _, "variant"}
|
||||||
, {',', _}
|
, {',', _}
|
||||||
, {int, _, Size}
|
|
||||||
, {',', _}
|
|
||||||
, {'[', _}
|
, {'[', _}
|
||||||
| Rest]) when Size > 0
|
| Rest]) ->
|
||||||
, Size < 256 ->
|
|
||||||
{ElementTypes, [{'}', _}| Rest2]} = to_list_of_types(Rest),
|
|
||||||
%% TODO: Error handling
|
%% TODO: Error handling
|
||||||
if Size =:= length(ElementTypes) ->
|
{ElementTypes, [{'}', _}| Rest2]} = to_list_of_types(Rest),
|
||||||
{{variant, Size, ElementTypes}, Rest2}
|
{{variant, ElementTypes}, Rest2}.
|
||||||
end.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
to_list_of_types([{']', _} | Rest]) -> {[], Rest};
|
to_list_of_types([{']', _} | Rest]) -> {[], Rest};
|
||||||
@ -819,11 +813,11 @@ serialize_type(address) -> [4];
|
|||||||
serialize_type(bits) -> [5];
|
serialize_type(bits) -> [5];
|
||||||
serialize_type({map, K, V}) -> [6 | serialize_type(K) ++ serialize_type(V)];
|
serialize_type({map, K, V}) -> [6 | serialize_type(K) ++ serialize_type(V)];
|
||||||
serialize_type(string) -> [7];
|
serialize_type(string) -> [7];
|
||||||
serialize_type({variant, Size, ListOfVariants})
|
serialize_type({variant, ListOfVariants}) ->
|
||||||
when Size > 0
|
Size = length(ListOfVariants),
|
||||||
, Size < 256
|
if Size < 256 ->
|
||||||
, Size =:= length(ListOfVariants) ->
|
[8, Size | [serialize_type(T) || T <- ListOfVariants]]
|
||||||
[8, Size | [serialize_type(T) || T <- ListOfVariants]].
|
end.
|
||||||
|
|
||||||
|
|
||||||
%% -------------------------------------------------------------------
|
%% -------------------------------------------------------------------
|
||||||
|
@ -69,5 +69,5 @@ FUNCTION address() : address
|
|||||||
RETURNR #deadbeef
|
RETURNR #deadbeef
|
||||||
|
|
||||||
;; Option(integer) = NONE | SOME(integer)
|
;; Option(integer) = NONE | SOME(integer)
|
||||||
FUNCTION varaint() : {variant, 2, [{tuple, []}, {tuple, [integer]}]}
|
FUNCTION varaint() : {variant, [{tuple, []}, {tuple, [integer]}]}
|
||||||
RETURNR #deadbeef
|
RETURNR #deadbeef
|
||||||
|
Loading…
x
Reference in New Issue
Block a user