SisMaker 4 лет назад
Родитель
Сommit
886d87fc22
5 измененных файлов: 125 добавлений и 94 удалений
  1. +7
    -7
      include/eVPack.hrl
  2. +2
    -1
      rebar.config
  3. +14
    -11
      src/deTest.erl
  4. +42
    -15
      src/eVPack.erl
  5. +60
    -60
      src/enTest.erl

+ 7
- 7
include/eVPack.hrl Просмотреть файл

@ -2,15 +2,15 @@
-type vpOpt() :: pos_integer().
-export_type([vpack/0, vpOpt/0]).
-define(vpObjNcNs, 0). %% Key
-define(vpObjNcYs, 1). %% Key
-define(vpObjYc, 2). %%
-define(VpObjNcNs, 0). %% Key
-define(VpObjNcYs, 1). %% Key
-define(VpObjYc, 2). %%
-define(vpArrNc, 0). %%
-define(vpArrYc, 1). %%
-define(VpArrNc, 0). %%
-define(VpArrYc, 1). %%
-define(VpDefObjOpt, 0). %% Obj key Obj不压缩
-define(VpDefArrOpt, 0). %% Arr不压缩
-define(VpObjDef, 0). %% Obj key Obj不压缩
-define(VpArrDef, 0). %% Arr不压缩
-define(VpAllOpts(Arr, Obj), Obj bsl 1 bor Arr). %% Obj Arr选项
-define(VpObjOpts(VpAllOpts), VpAllOpts bsr 1). %% Obj选项

+ 2
- 1
rebar.config Просмотреть файл

@ -1,4 +1,5 @@
{erl_opts, [debug_info, {i, "include"}]}.
{deps, [
{erlSync, ".*", {git, "http://47.108.26.175:53000/SisMaker/erlSync.git", {branch, "master"}}}
{erlSync, ".*", {git, "http://47.108.26.175:53000/SisMaker/erlSync.git", {branch, "master"}}},
{jiffy, {git, "https://github.com/davisp/jiffy.git", {tag, "1.0.6"}}}
]}.

src/decoderTest.erl → src/deTest.erl Просмотреть файл

@ -1,4 +1,5 @@
-module(decoderTest).
-module(deTest).
-include("eVPack.hrl").
-compile([no_auto_import]).
@ -9,9 +10,10 @@
test() ->
try do() of
_ ->
ok
'all test is pass'
catch
E:C:S ->
io:format("IMY*******************"),
{E, C, S}
end.
@ -19,7 +21,7 @@ do() ->
[] = eVPack:decode(<<1>>),
#{} = eVPack:decode(<<10>>),
illegal = eVPack:decode(<<23>>),
nil = eVPack:decode(<<24>>),
undefined = eVPack:decode(<<24>>),
false = eVPack:decode(<<25>>),
true = eVPack:decode(<<26>>),
1.33699999999999988631e+2 = eVPack:decode(<<27, 102, 102, 102, 102, 102, 182, 96, 64>>),
@ -107,7 +109,7 @@ do() ->
109, 32, 115, 101, 109, 112, 101, 114, 32, 110, 105, 115, 105, 46, 32, 65, 101, 110, 101, 97, 110, 32, 118, 117,
108, 112, 117, 116, 97, 116, 101, 32, 101, 108, 101, 105, 102, 101, 110, 100, 32, 116, 101, 108, 108, 117, 115, 46>>,
Str = eVPack:decode(StrBin),
ExBin = eVPack:decode(<<49, 50, 51, 52, 53, 54, 55, 56, 57>>),
1 = eVPack:decode(<<49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = eVPack:decode(<<192, 9, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = eVPack:decode(<<193, 9, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = eVPack:decode(<<194, 9, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
@ -116,14 +118,12 @@ do() ->
ExBin = eVPack:decode(<<197, 9, 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = eVPack:decode(<<198, 9, 0, 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = eVPack:decode(<<199, 9, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57>>),
ExBin = [1, 2, 3],
Ex3 = eVPack:decode(<<6, 9, 3, 49, 50, 51, 3, 4, 5>>),
Ex3 = eVPack:decode(<<6, 10, 3, 0, 49, 50, 51, 3, 4, 5>>),
Ex3 = eVPack:decode(<<7, 14, 0, 3, 0, 49, 50, 51, 5, 0, 6, 0, 7, 0>>),
Ex3 = eVPack:decode(<<8, 24, 0, 0, 0, 3, 0, 0, 0, 49, 50, 51, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0>>),
Ex3 = eVPack:decode(<<9, 44, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 9, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0>>),
Ex3 = eVPack:decode(<<6, 5, 1, 49, 3>>),
Ex3 = [1],
%%Ex3 = eVPack:decode(<<9, 44, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 9, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0>>),
%%Ex3 = eVPack:decode(<<6, 5, 1, 49, 3>>),
Ex4 = [1, 2, 3],
Ex4 = eVPack:decode(<<2, 5, 49, 50, 51>>),
Ex4 = eVPack:decode(<<2, 6, 0, 49, 50, 51>>),
@ -131,7 +131,7 @@ do() ->
Ex4 = eVPack:decode(<<4, 8, 0, 0, 0, 49, 50, 51>>),
Ex4 = eVPack:decode(<<5, 12, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51>>),
[0.0] = eVPack:decode(<<2, 11, 27, 0:64/integer-little-unsigned>>),
0 = eVPack:decode(<<2, 11, 28, 0:64/integer-little-unsigned>>),
[0] = eVPack:decode(<<2, 11, 28, 0:64/integer-little-unsigned>>),
[1, 16] = eVPack:decode(<<19, 6, 49, 40, 16, 2>>),
Ex5 = [[1, 2, 3], [1, 2, 3]],
Ex5 = eVPack:decode(<<2, 12, 2, 5, 49, 50, 51, 2, 5, 49, 50, 51>>),
@ -145,7 +145,7 @@ do() ->
Ex9 = eVPack:decode(<<19, 35, 20, 16, 65, 97, 40, 12, 65, 98, 26, 65, 99, 67, 120, 121, 122, 3, 20, 16, 65, 97, 40, 12, 65, 98, 26, 65, 99, 67, 120, 121, 122, 3, 2>>),
Ex10 = [#{<<"key">> => 42}, <<"fooooobar">>, <<"x">>, <<1, 2, 3, 4, 5, 6, 7, 8>>],
Ex10Bin = <<2, 42, 11, 10, 1, 67, 107, 101, 121, 40, 42, 3, 73, 102, 111, 111, 111, 111, 111,
98, 97, 114, 191, 1, 0, 0, 0, 0, 0, 0, 0, 120, 192, 8, 1, 2, 3, 4, 5, 6, 7, 8>>,
98, 97, 114, 191, 1, 0, 0, 0, 0, 0, 0, 0, 120, 192, 8, 1, 2, 3, 4, 5, 6, 7, 8>>,
Ex10 = eVPack:decode(Ex10Bin),
_Ex11 = #{<<"0">> =>
#{<<"0">> => <<"test">>, <<"1">> => <<"test">>,
@ -227,4 +227,7 @@ do() ->
<<"2">> => <<"test">>, <<"3">> => <<"test">>,
<<"4">> => <<"test">>, <<"5">> => <<"test">>,
<<"6">> => <<"test">>, <<"7">> => <<"test">>,
<<"8">> => <<"test">>, <<"9">> => <<"test">>}}.
<<"8">> => <<"test">>, <<"9">> => <<"test">>}},
BB = eVPack:encodeBin(_Ex12, ?VpArrDef, ?VpObjNcYs),
io:format("~p~n", [eVPack:decode(BB)]),
ok.

+ 42
- 15
src/eVPack.erl Просмотреть файл

@ -8,7 +8,9 @@
-export([
encode/1
, encodeBin/1
, encode/3
, encodeBin/3
, decode/1
, encodeAtom/1
, encodeMap/3
@ -29,7 +31,7 @@
encode(Term) ->
%%{VPack, _Size} = encoder(Term, ?VpDefArrOpt, ?VpDefObjOpt),
%%VPack.
try encoder(Term, ?VpDefArrOpt, ?VpDefObjOpt) of
try encoder(Term, ?VpArrDef, ?VpObjDef) of
{VPack, _Size} ->
VPack
catch
@ -37,6 +39,18 @@ encode(Term) ->
{C, E, S}
end.
-spec encodeBin(term()) -> {ok, vpack()} | {error, any()}.
encodeBin(Term) ->
%%{VPack, _Size} = encoder(Term, ?VpDefArrOpt, ?VpDefObjOpt),
%%iolist_to_binary(VPack).
try encoder(Term, ?VpArrDef, ?VpObjDef) of
{VPack, _Size} ->
iolist_to_binary(VPack)
catch
C:E:S ->
{C, E, S}
end.
-spec encode(term(), vpOpt(), vpOpt()) -> {ok, vpack()} | {error, any()}.
encode(Term, ArrOpt, ObjOpt) ->
% {VPack, _Size} = encoder(Term, ArrOpt, ObjOpt),
@ -49,6 +63,18 @@ encode(Term, ArrOpt, ObjOpt) ->
{C, E, S}
end.
-spec encodeBin(term(), vpOpt(), vpOpt()) -> {ok, vpack()} | {error, any()}.
encodeBin(Term, ArrOpt, ObjOpt) ->
% {VPack, _Size} = encoder(Term, ArrOpt, ObjOpt),
% iolist_to_binary(VPack).
try encoder(Term, ArrOpt, ObjOpt) of
{VPack, _Size} ->
iolist_to_binary(VPack)
catch
C:E:S ->
{C, E, S}
end.
encoder(Map, ArrOpt, ObjOpt) when erlang:is_map(Map) ->
encodeMap(ObjOpt, Map, ArrOpt);
encoder(Atom, _, _) when erlang:is_atom(Atom) ->
@ -86,6 +112,7 @@ encodeAtom(minKey) -> {<<30/integer>>, 1};
encodeAtom(maxKey) -> {<<31/integer>>, 1};
encodeAtom(illegal) -> {<<23/integer>>, 1};
encodeAtom(null) -> {<<24/integer>>, 1};
encodeAtom(nil) -> {<<24/integer>>, 1};
encodeAtom(Atom) ->
encodeString(erlang:atom_to_binary(Atom, utf8)).
@ -229,13 +256,13 @@ doEncodeMap([OneKeys | Left], Map, ArrOpt, ObjOpt, AccList, Offsets, SumSize) ->
end
end.
encodeMap(?vpObjNcNs, Map, ArrOpt) ->
encodeMap(?VpObjNcNs, Map, ArrOpt) ->
MapSize = erlang:map_size(Map),
case MapSize == 0 of
true ->
{<<10/integer>>, 1};
_ ->
{AccList, Offsets, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?vpObjNcNs, [], [], 0),
{AccList, Offsets, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?VpObjNcNs, [], [], 0),
IoData = lists:reverse(AccList),
case MapSize >= 1000 of
false ->
@ -244,13 +271,13 @@ encodeMap(?vpObjNcNs, Map, ArrOpt) ->
encodeUnSortMapIndexTable(erlang:iolist_to_binary(IoData), MapSize, Offsets, SumSize)
end
end;
encodeMap(?vpObjYc, Map, ArrOpt) ->
encodeMap(?VpObjYc, Map, ArrOpt) ->
MapSize = erlang:map_size(Map),
case MapSize == 0 of
true ->
{<<10/integer>>, 1};
_ ->
{AccList, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?vpObjYc, [], 0),
{AccList, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?VpObjYc, [], 0),
IoData = lists:reverse(AccList),
case MapSize >= 1000 of
false ->
@ -259,7 +286,7 @@ encodeMap(?vpObjYc, Map, ArrOpt) ->
encodeCompactData(<<20/integer>>, erlang:iolist_to_binary(IoData), SumSize, MapSize)
end
end;
encodeMap(?vpObjNcYs, Map, ArrOpt) ->
encodeMap(?VpObjNcYs, Map, ArrOpt) ->
MapSize = erlang:map_size(Map),
case MapSize == 0 of
true ->
@ -267,7 +294,7 @@ encodeMap(?vpObjNcYs, Map, ArrOpt) ->
_ ->
Keys = maps:keys(Map),
StrKeys = [asKey(OneKey) || OneKey <- Keys],
{AccList, Offsets, SumSize} = doEncodeMap(lists:sort(StrKeys), Map, ArrOpt, ?vpObjNcYs, [], [], 0),
{AccList, Offsets, SumSize} = doEncodeMap(lists:sort(StrKeys), Map, ArrOpt, ?VpObjNcYs, [], [], 0),
IoData = lists:reverse(AccList),
case MapSize >= 1000 of
false ->
@ -392,37 +419,37 @@ doEncodeList([One | Left], ArrOpt, ObjOpt, AccList, Offsets, SumSize, Count, Siz
doEncodeList(Left, ArrOpt, ObjOpt, [ValueEn | AccList], [SumSize | Offsets], ValueSize + SumSize, Count + 1, ValueSize =/= SizeOrIsNot orelse SizeOrIsNot)
end.
encodeList(?vpArrNc, List, ObjOpt) ->
encodeList(?VpArrNc, List, ObjOpt) ->
case List of
[] ->
{<<1/integer>>, 1};
_ ->
{AccList, Offsets, SumSize, Count, IsNotSameSize} = doEncodeList(List, ?vpArrNc, ObjOpt, [], [], 0, 0, init),
{AccList, Offsets, SumSize, Count, IsNotSameSize} = doEncodeList(List, ?VpArrNc, ObjOpt, [], [], 0, 0, init),
IoData = lists:reverse(AccList),
case Count >= 1000 of
false ->
case IsNotSameSize of
true ->
encodeListWithoutIndexTable(IoData, SumSize);
encodeListWithIndexTable(IoData, Count, Offsets, SumSize);
_ ->
encodeListWithIndexTable(IoData, Count, Offsets, SumSize)
encodeListWithoutIndexTable(IoData, SumSize)
end;
_ ->
case IsNotSameSize of
true ->
encodeListWithoutIndexTable(erlang:iolist_to_binary(IoData), SumSize);
encodeListWithIndexTable(erlang:iolist_to_binary(IoData), Count, Offsets, SumSize);
_ ->
encodeListWithIndexTable(erlang:iolist_to_binary(IoData), Count, Offsets, SumSize)
encodeListWithoutIndexTable(erlang:iolist_to_binary(IoData), SumSize)
end
end
end;
encodeList(?vpArrYc, List, ObjOpt) ->
encodeList(?VpArrYc, List, ObjOpt) ->
case List of
[] ->
{<<1/integer>>, 1};
_ ->
{AccList, SumSize, Count} = doEncodeList(List, ?vpArrYc, ObjOpt, [], 0, 0),
{AccList, SumSize, Count} = doEncodeList(List, ?VpArrYc, ObjOpt, [], 0, 0),
IoData = lists:reverse(AccList),
case Count >= 1000 of

src/encoderTest.erl → src/enTest.erl Просмотреть файл

@ -1,4 +1,4 @@
-module(encoderTest).
-module(enTest).
-include("eVPack.hrl").
-compile([no_auto_import]).
@ -10,57 +10,57 @@
test() ->
try do() of
_ ->
ok
'all test is pass'
catch
E:C:S ->
{E, C, S}
end.
do() ->
<<23>> = eVPack:encode(illegal),
<<24>> = eVPack:encode(nil),
<<25>> = eVPack:encode(false),
<<26>> = eVPack:encode(true),
<<27, 102, 102, 102, 102, 102, 182, 96, 64>> = eVPack:encode(1.33699999999999988631e+2),
<<27, 102, 102, 102, 102, 102, 182, 96, 192>> = eVPack:encode(-1.33699999999999988631e+2),
<<30>> = eVPack:encode(min_key),
<<31>> = eVPack:encode(max_key),
<<48>> = eVPack:encode(0),
<<49>> = eVPack:encode(1),
<<50>> = eVPack:encode(2),
<<51>> = eVPack:encode(3),
<<52>> = eVPack:encode(4),
<<53>> = eVPack:encode(5),
<<54>> = eVPack:encode(6),
<<55>> = eVPack:encode(7),
<<56>> = eVPack:encode(8),
<<57>> = eVPack:encode(9),
<<58>> = eVPack:encode(-6),
<<59>> = eVPack:encode(-5),
<<60>> = eVPack:encode(-4),
<<61>> = eVPack:encode(-3),
<<62>> = eVPack:encode(-2),
<<63>> = eVPack:encode(-1),
<<32, (-7)/integer-little-signed>> = eVPack:encode(-7),
<<32, 128>> = eVPack:encode(-128),
<<33, 0, 128>> = eVPack:encode(-32768),
<<34, 0, 0, 128>> = eVPack:encode(-8388608),
<<35, 0, 0, 0, 128>> = eVPack:encode(-2147483648),
<<36, 0, 0, 0, 0, 128>> = eVPack:encode(-549755813888),
<<37, 0, 0, 0, 0, 0, 128>> = eVPack:encode(-140737488355328),
<<38, 0, 0, 0, 0, 0, 0, 128>> = eVPack:encode(-36028797018963968),
<<39, 0, 0, 0, 0, 0, 0, 0, 128>> = eVPack:encode(-9223372036854775808),
<<40, 255>> = eVPack:encode(255),
<<41, 255, 255>> = eVPack:encode(65535),
<<42, 255, 255, 255>> = eVPack:encode(16777215),
<<43, 255, 255, 255, 255>> = eVPack:encode(4294967295),
<<44, 255, 255, 255, 255, 255>> = eVPack:encode(1099511627775),
<<45, 255, 255, 255, 255, 255, 255>> = eVPack:encode(281474976710655),
<<46, 255, 255, 255, 255, 255, 255, 255>> = eVPack:encode(72057594037927935),
<<47, 255, 255, 255, 255, 255, 255, 255, 255>> = eVPack:encode(18446744073709551615),
<<75, 72, 97, 108, 108, 111, 32, 87, 101, 108, 116, 33>> = eVPack:encode(<<"Hallo Welt!">>),
<<76, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33>> = eVPack:encode(<<"Hello World!">>),
Str = <<"Lorem ipsum dolor sit amet, consectetuer "
<<23>> = eVPack:encodeBin(illegal),
<<24>> = eVPack:encodeBin(nil),
<<25>> = eVPack:encodeBin(false),
<<26>> = eVPack:encodeBin(true),
<<27, 102, 102, 102, 102, 102, 182, 96, 64>> = eVPack:encodeBin(1.33699999999999988631e+2),
<<27, 102, 102, 102, 102, 102, 182, 96, 192>> = eVPack:encodeBin(-1.33699999999999988631e+2),
<<30>> = eVPack:encodeBin(minKey),
<<31>> = eVPack:encodeBin(maxKey),
<<48>> = eVPack:encodeBin(0),
<<49>> = eVPack:encodeBin(1),
<<50>> = eVPack:encodeBin(2),
<<51>> = eVPack:encodeBin(3),
<<52>> = eVPack:encodeBin(4),
<<53>> = eVPack:encodeBin(5),
<<54>> = eVPack:encodeBin(6),
<<55>> = eVPack:encodeBin(7),
<<56>> = eVPack:encodeBin(8),
<<57>> = eVPack:encodeBin(9),
<<58>> = eVPack:encodeBin(-6),
<<59>> = eVPack:encodeBin(-5),
<<60>> = eVPack:encodeBin(-4),
<<61>> = eVPack:encodeBin(-3),
<<62>> = eVPack:encodeBin(-2),
<<63>> = eVPack:encodeBin(-1),
<<32, (-7)/integer-little-signed>> = eVPack:encodeBin(-7),
<<32, 128>> = eVPack:encodeBin(-128),
<<33, 0, 128>> = eVPack:encodeBin(-32768),
<<34, 0, 0, 128>> = eVPack:encodeBin(-8388608),
<<35, 0, 0, 0, 128>> = eVPack:encodeBin(-2147483648),
<<36, 0, 0, 0, 0, 128>> = eVPack:encodeBin(-549755813888),
<<37, 0, 0, 0, 0, 0, 128>> = eVPack:encodeBin(-140737488355328),
<<38, 0, 0, 0, 0, 0, 0, 128>> = eVPack:encodeBin(-36028797018963968),
<<39, 0, 0, 0, 0, 0, 0, 0, 128>> = eVPack:encodeBin(-9223372036854775808),
<<40, 255>> = eVPack:encodeBin(255),
<<41, 255, 255>> = eVPack:encodeBin(65535),
<<42, 255, 255, 255>> = eVPack:encodeBin(16777215),
<<43, 255, 255, 255, 255>> = eVPack:encodeBin(4294967295),
<<44, 255, 255, 255, 255, 255>> = eVPack:encodeBin(1099511627775),
<<45, 255, 255, 255, 255, 255, 255>> = eVPack:encodeBin(281474976710655),
<<46, 255, 255, 255, 255, 255, 255, 255>> = eVPack:encodeBin(72057594037927935),
<<47, 255, 255, 255, 255, 255, 255, 255, 255>> = eVPack:encodeBin(18446744073709551615),
<<75, 72, 97, 108, 108, 111, 32, 87, 101, 108, 116, 33>> = eVPack:encodeBin(<<"Hallo Welt!">>),
<<76, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33>> = eVPack:encodeBin(<<"Hello World!">>),
_Str = <<"Lorem ipsum dolor sit amet, consectetuer "
"adipiscing elit. Aenean commodo ligula "
"eget dolor. ",
"Aenean massa. Cum sociis natoque penatibus "
@ -77,7 +77,7 @@ do() ->
"tincidunt. Cras dapibus. ",
"Vivamus elementum semper nisi. Aenean "
"vulputate eleifend tellus.">>,
StrBin = <<191, 55, 2, 0, 0, 0, 0, 0, 0, 76, 111, 114, 101, 109, 32, 105, 112, 115, 117, 109, 32, 100, 111, 108, 111,
_StrBin = <<191, 55, 2, 0, 0, 0, 0, 0, 0, 76, 111, 114, 101, 109, 32, 105, 112, 115, 117, 109, 32, 100, 111, 108, 111,
114, 32, 115, 105, 116, 32, 97, 109, 101, 116, 44, 32, 99, 111, 110, 115, 101, 99, 116, 101, 116, 117, 101,
114, 32, 97, 100, 105, 112, 105, 115, 99, 105, 110, 103, 32, 101, 108, 105, 116, 46, 32, 65, 101, 110, 101,
97, 110, 32, 99, 111, 109, 109, 111, 100, 111, 32, 108, 105, 103, 117, 108, 97, 32, 101, 103, 101,
@ -106,22 +106,21 @@ do() ->
109, 112, 101, 114, 32, 110, 105, 115, 105, 46, 32, 65, 101, 110, 101, 97, 110, 32, 118, 117,
108, 112, 117, 116, 97, 116, 101, 32, 101, 108, 101, 105, 102, 101, 110, 100, 32, 116, 101, 108,
108, 117, 115, 46>>,
StrBin = eVPack:encode(Str),
%%StrBin = eVPack:encodeBin(Str),
<<1>> = eVPack:encode([]),
<<2, 5, "1", "2", "3">> = eVPack:encode([1, 2, 3]),
<<1>> = eVPack:encodeBin([]),
<<19, 6, 49, 40, 16, 2>> = eVPack:encode([1, 16], [{compact_arrays, true}]),
<<19, 6, 49, 40, 16, 2>> = eVPack:encodeBin([1, 16], ?VpArrYc, ?VpObjDef),
Arr = <<"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. ", "Aenean massa. Cum sociis ...">>,
ArrList = [Arr, 1, 2, 42],
<<19, _/binary>> = ArrBin = eVPack:encode(ArrList, ?vpArrYc, ?VpDefObjOpt),
ArrList = eVPack:decode(ArrBin),
<<19, _/binary>> = eVPack:encodeBin(ArrList, ?VpArrYc, ?VpObjDef),
%% ArrList = eVPack:decode(ArrBin),
ArrLists = <<2, 12, 2, 5, 49, 50, 51, 2, 5, 49, 50, 51>>,
ArrsBin = [[1, 2, 3], [1, 2, 3]],
ArrLists = eVPack:encode(ArrsBin),
<<10>> = eVPack:encode(#{}),
<<11, 8, 1, 65, 97, 65, 98, 3>> = eVPack:encode(#{<<"a">> => <<"b">>}),
<<11, 13, 2, 65, 97, 65, 98, 65, 98, 65, 97, 3, 7>> = eVPack:encode(#{a => <<"b">>, b => <<"a">>}),
ArrLists = eVPack:encodeBin(ArrsBin),
<<10>> = eVPack:encodeBin(#{}),
<<15, 8, 1, 65, 97, 65, 98, 3>> = eVPack:encodeBin(#{<<"a">> => <<"b">>}),
<<15, 13, 2, 65, 97, 65, 98, 65, 98, 65, 97, 3, 7>> = eVPack:encodeBin(#{a => <<"b">>, b => <<"a">>}),
Maps = #{<<"0">> =>
#{<<"0">> => <<"test">>, <<"1">> => <<"test">>,
<<"2">> => <<"test">>, <<"3">> => <<"test">>,
@ -151,7 +150,7 @@ do() ->
116, 65, 51, 68, 116, 101, 115, 116, 65, 52, 68, 116, 101, 115, 116, 3, 10, 17, 24, 31, 65, 52, 11, 43,
5, 65, 48, 68, 116, 101, 115, 116, 65, 49, 68, 116, 101, 115, 116, 65, 50, 68, 116, 101, 115, 116, 65, 51, 68, 116, 101, 115,
116, 65, 52, 68, 116, 101, 115, 116, 3, 10, 17, 24, 31, 3, 48, 93, 138, 183>>,
MapBin = eVPack:encode(Maps),
MapBin = eVPack:encodeBin(Maps, ?VpArrDef, ?VpObjNcYs),
Mapss = #{<<"0">> =>
#{<<"0">> => <<"test">>, <<"1">> => <<"test">>,
<<"2">> => <<"test">>, <<"3">> => <<"test">>,
@ -245,7 +244,8 @@ do() ->
68, 116, 101, 115, 116, 65, 51, 68, 116, 101, 115, 116, 65, 52, 68, 116, 101, 115, 116, 65, 53, 68, 116, 101, 115, 116, 65, 54,
68, 116, 101, 115, 116, 65, 55, 68, 116, 101, 115, 116, 65, 56, 68, 116, 101, 115, 116, 65, 57, 68, 116, 101,
115, 116, 3, 10, 17, 24, 31, 38, 45, 52, 59, 66, 5, 0, 90, 0, 175, 0, 4, 1, 89, 1, 174, 1, 3, 2, 88, 2, 173, 2, 2, 3>>,
MapsBin = eVPack:encode(Mapss),
MapsBin = eVPack:encodeBin(Mapss, ?VpArrDef, ?VpObjNcYs),
MapCom = #{<<"a">> => 12, <<"b">> => true, <<"c">> => <<"xyz">>},
MapComBin = <<20, 16, 65, 97, 40, 12, 65, 98, 26, 65, 99, 67, 120, 121, 122, 3>>,
MapComBin = eVPack:encode(MapCom, ?VpDefArrOpt, ?vpObjYc).
MapComBin = eVPack:encodeBin(MapCom, ?VpArrDef, ?VpObjYc).

Загрузка…
Отмена
Сохранить