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