Browse Source

ft: 优化

master
SisMaker 2 years ago
parent
commit
825f030d76
5 changed files with 103 additions and 172 deletions
  1. +0
    -1
      include/eVPack.hrl
  2. +1
    -1
      src/deTest.erl
  3. +2
    -2
      src/eVPTest.erl
  4. +48
    -116
      src/eVPack.erl
  5. +52
    -52
      src/enTest.erl

+ 0
- 1
include/eVPack.hrl View File

@ -8,7 +8,6 @@
-define(VpObjNcYs, 0). %% Key
-define(VpObjYc, 1). %%
%% -define(VpObjNcNs, 2). %% Key object
-define(VpArrNc, 0). %%
-define(VpArrYc, 1). %%

+ 1
- 1
src/deTest.erl View File

@ -228,6 +228,6 @@ do() ->
<<"4">> => <<"test">>, <<"5">> => <<"test">>,
<<"6">> => <<"test">>, <<"7">> => <<"test">>,
<<"8">> => <<"test">>, <<"9">> => <<"test">>}},
BB = eVPack:encodeBin(_Ex12, ?VpArrDef, ?VpObjNcYs),
BB = eVPack:encode(_Ex12, ?VpArrDef, ?VpObjNcYs),
io:format("~p~n", [eVPack:decode(BB)]),
ok.

+ 2
- 2
src/eVPTest.erl View File

@ -50,13 +50,13 @@ getHex(X) ->
}).
test(Term) ->
VPBin = eVPack:encodeBin(Term),
VPBin = eVPack:encode(Term),
VPBinHex = binToHex(VPBin),
file:write_file("./vpackbin", VPBinHex),
os:cmd("./vpackVal --hex vpackbin").
test(Term, ArrOpt, ObjOpt) ->
VPBin = eVPack:encodeBin(Term, ArrOpt, ObjOpt),
VPBin = eVPack:encode(Term, ArrOpt, ObjOpt),
VPBinHex = binToHex(VPBin),
file:write_file("./vpackbin", VPBinHex),
os:cmd("./vpackVal --hex vpackbin").

+ 48
- 116
src/eVPack.erl View File

@ -15,10 +15,8 @@
, decode/1
%% encode
, encodeIol/1
, encodeBin/1
, encodeIol/3
, encodeBin/3
, encode/1
, encode/3
%% other API
, encodeAtom/1
@ -27,34 +25,30 @@
, encodeFloat/1
, encodeString/1
, encodeInteger/1
, doEncodeList1/3
]).
setSV(Size) ->
erlang:put('$VPSize', Size).
put('$VPSize', Size).
getSV() ->
erlang:get('$VPSize').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% encode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
get('$VPSize').
-spec encodeIol(term()) -> vpack() | {error, any()}.
encodeIol(Term) ->
encoder(Term, ?VpArrDef, ?VpObjDef).
delSV() ->
erase('$VPSize').
-spec encodeBin(term()) -> vpack() | {error, any()}.
encodeBin(Term) ->
iolist_to_binary(encoder(Term, ?VpArrDef, ?VpObjDef)).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% encode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec encodeIol(term(), vpOpt(), vpOpt()) -> vpack() | {error, any()}.
encodeIol(Term, ArrOpt, ObjOpt) ->
encoder(Term, ArrOpt, ObjOpt).
-spec encode(term()) -> vpack() | {error, any()}.
encode(Term) ->
Ret = encoder(Term, ?VpArrDef, ?VpObjDef),
delSV(),
Ret.
-spec encodeBin(term(), vpOpt(), vpOpt()) -> vpack() | {error, any()}.
encodeBin(Term, ArrOpt, ObjOpt) ->
iolist_to_binary(encoder(Term, ArrOpt, ObjOpt)).
-spec encode(term(), vpOpt(), vpOpt()) -> vpack() | {error, any()}.
encode(Term, ArrOpt, ObjOpt) ->
Ret = encoder(Term, ArrOpt, ObjOpt),
delSV(),
Ret.
encoder(Map, ArrOpt, ObjOpt) when erlang:is_map(Map) -> encodeMap(ObjOpt, Map, ArrOpt);
encoder(Atom, _, _) when erlang:is_atom(Atom) -> encodeAtom(Atom);
@ -226,31 +220,19 @@ encodeBinary(Blob) ->
erlang:throw({error, too_max_binary})
end.
doEncodeMap(Iterator, ArrOpt, ObjOpt, AccList, SumSize) ->
doEncodeMap(Iterator, ArrOpt, ObjOpt, AccBin, SumSize) ->
case maps:next(Iterator) of
{Key, Value, NextIter} ->
KeyEn = encodeString(asKey(Key)),
KeySize = getSV(),
ValueEn = encoder(Value, ArrOpt, ObjOpt),
ValueSize = getSV(),
doEncodeMap(NextIter, ArrOpt, ObjOpt, [ValueEn, KeyEn | AccList], SumSize + KeySize + ValueSize);
doEncodeMap(NextIter, ArrOpt, ObjOpt, <<AccBin/binary, KeyEn/binary, ValueEn/binary>>, SumSize + KeySize + ValueSize);
none ->
{AccList, SumSize}
{AccBin, SumSize}
end.
%% doEncodeMap(Iterator, ArrOpt, ObjOpt, AccList, Offsets, SumSize) ->
%% case maps:next(Iterator) of
%% {Key, Value, NextIter} ->
%% KeyEn = encodeString(asKey(Key)),
%% KeySize = getSV(),
%% ValueEn = encoder(Value, ArrOpt, ObjOpt),
%% ValueSize = getSV(),
%% doEncodeMap(NextIter, ArrOpt, ObjOpt, [ValueEn, KeyEn | AccList], [SumSize | Offsets], SumSize + KeySize + ValueSize);
%% none ->
%% {AccList, Offsets, SumSize}
%% end.
doEncodeSortMap(Iterator, ArrOpt, ObjOpt, AccList, Offsets, SumSize) ->
doEncodeSortMap(Iterator, ArrOpt, ObjOpt, AccBin, Offsets, SumSize) ->
case maps:next(Iterator) of
{Key, Value, NextIter} ->
KeyStr = asKey(Key),
@ -258,9 +240,9 @@ doEncodeSortMap(Iterator, ArrOpt, ObjOpt, AccList, Offsets, SumSize) ->
KeySize = getSV(),
ValueEn = encoder(Value, ArrOpt, ObjOpt),
ValueSize = getSV(),
doEncodeSortMap(NextIter, ArrOpt, ObjOpt, [ValueEn, KeyEn | AccList], [SumSize | Offsets], SumSize + KeySize + ValueSize);
doEncodeSortMap(NextIter, ArrOpt, ObjOpt, <<AccBin/binary, KeyEn/binary, ValueEn/binary>>, [SumSize | Offsets], SumSize + KeySize + ValueSize);
none ->
{AccList, Offsets, SumSize}
{AccBin, Offsets, SumSize}
end.
encodeMap(?VpObjNcYs, Map, ArrOpt) ->
@ -270,9 +252,8 @@ encodeMap(?VpObjNcYs, Map, ArrOpt) ->
setSV(1),
<<10/integer>>;
_ ->
{AccList, Offsets, SumSize} = doEncodeSortMap(maps:iterator(Map), ArrOpt, ?VpObjNcYs, [], [], 0),
IoData = lists:reverse(AccList),
encodeSortMapIndexTable(IoData, MapSize, Offsets, SumSize)
{AccBin, Offsets, SumSize} = doEncodeSortMap(maps:iterator(Map), ArrOpt, ?VpObjNcYs, <<>>, [], 0),
encodeSortMapIndexTable(AccBin, MapSize, Offsets, SumSize)
end;
encodeMap(?VpObjYc, Map, ArrOpt) ->
MapSize = erlang:map_size(Map),
@ -281,76 +262,37 @@ encodeMap(?VpObjYc, Map, ArrOpt) ->
setSV(1),
<<10/integer>>;
_ ->
{AccList, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?VpObjYc, [], 0),
IoData = lists:reverse(AccList),
encodeCompactData(<<20/integer>>, IoData, SumSize, MapSize)
{AccBin, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?VpObjYc, <<>>, 0),
encodeCompactData(<<20/integer>>, AccBin, SumSize, MapSize)
end.
%% encodeMap(?VpObjNcNs, Map, ArrOpt) ->
%% MapSize = erlang:map_size(Map),
%% case MapSize == 0 of
%% true ->
%% setSV(1),
%% <<10/integer>>;
%% _ ->
%% {AccList, Offsets, SumSize} = doEncodeMap(maps:iterator(Map), ArrOpt, ?VpObjNcNs, [], [], 0),
%% IoData = lists:reverse(AccList),
%% encodeUnSortMapIndexTable(IoData, MapSize, Offsets, SumSize)
%% end.
encodeSortMapIndexTable(IoData, Count, Offsets, SumSize) ->
encodeSortMapIndexTable(BinData, Count, Offsets, SumSize) ->
TemSize = SumSize + Count,
if
TemSize < 253 ->
AllSize = TemSize + 3,
Header = <<11/integer, AllSize:8/integer-unsigned, Count:8/integer-unsigned>>,
setSV(AllSize),
[Header, IoData, buildSMIndexTable_1(Offsets, 3)];
<<Header/binary, BinData/binary, (buildSMIndexTable_1(Offsets, 3))/binary>>;
TemSize + Count < 65531 ->
AllSize = TemSize + Count + 5,
Header = <<12/integer, AllSize:16/integer-little-unsigned, Count:16/integer-little-unsigned>>,
setSV(AllSize),
[Header, IoData, buildSMIndexTable_2(Offsets, 5)];
<<Header/binary, BinData/binary, (buildSMIndexTable_2(Offsets, 5))/binary>>;
TemSize + Count * 3 < 4294967287 ->
AllSize = TemSize + Count * 3 + 9,
Header = <<13/integer, AllSize:32/integer-little-unsigned, Count:32/integer-little-unsigned>>,
setSV(AllSize),
[Header, IoData, buildSMIndexTable_4(Offsets, 9)];
<<Header/binary, BinData/binary, (buildSMIndexTable_4(Offsets, 9))/binary>>;
TemSize + Count * 7 < 18446744073709551599 ->
AllSize = TemSize + Count * 7 + 17,
Header = <<14/integer, AllSize:64/integer-little-unsigned>>,
Header = <<14/integer, AllSize:64/integer-little-unsigned, Count:64/integer-little-unsigned>>,
setSV(AllSize),
[Header, IoData, buildSMIndexTable_8(Offsets, 9), <<Count:64/integer-little-unsigned>>];
<<Header/binary, BinData/binary, (buildSMIndexTable_8(Offsets, 9))/binary>>;
true ->
erlang:throw({error, too_much_sort_map_size})
end.
%% encodeUnSortMapIndexTable(IoData, Count, Offsets, SumSize) ->
%% TemSize = SumSize + Count,
%% if
%% TemSize < 253 ->
%% AllSize = TemSize + 3,
%% Header = <<15/integer, AllSize:8/integer-unsigned, Count:8/integer-unsigned>>,
%% setSV(AllSize),
%% [Header, IoData, buildIndexTable_1(Offsets, 3)];
%% TemSize + Count < 65531 ->
%% AllSize = TemSize + Count + 5,
%% Header = <<16/integer, AllSize:16/integer-little-unsigned, Count:16/integer-little-unsigned>>,
%% setSV(AllSize),
%% [Header, IoData, buildIndexTable_2(Offsets, 5)];
%% TemSize + Count * 3 < 4294967287 ->
%% AllSize = TemSize + Count * 3 + 9,
%% Header = <<17/integer, AllSize:32/integer-little-unsigned, Count:32/integer-little-unsigned>>,
%% setSV(AllSize),
%% [Header, IoData, buildIndexTable_4(Offsets, 9)];
%% TemSize + Count * 7 < 18446744073709551599 ->
%% AllSize = TemSize + Count * 7 + 17,
%% Header = <<18/integer, AllSize:64/integer-little-unsigned>>,
%% setSV(AllSize),
%% [Header, IoData, buildIndexTable_8(Offsets, 9), <<Count:64/integer-little-unsigned>>];
%% true ->
%% erlang:throw({error, too_much_unsort_map_size})
%% end.
buildIndexTable_1(Offsets, StartSize) ->
<<<<(OneOff + StartSize):8/integer-little-unsigned>> || OneOff <- lists:reverse(Offsets)>>.
buildIndexTable_2(Offsets, StartSize) ->
@ -396,12 +338,12 @@ compactSize(AllSize) ->
end,
{compactInteger(LastSize, false), LastSize}.
encodeCompactData(Type, IoData, SumSize, Count) ->
encodeCompactData(Type, BinData, SumSize, Count) ->
CompactList = compactInteger(Count, true),
AllSize = SumSize + 1 + erlang:length(CompactList),
AllSize = SumSize + 1 + erlang:byte_size(CompactList),
{TotalSize, FinalSize} = compactSize(AllSize),
setSV(FinalSize),
<<Type/binary, TotalSize/binary, IoData/binary, CompactList/binary>>.
<<Type/binary, TotalSize/binary, BinData/binary, CompactList/binary>>.
asKey(Value) when erlang:is_atom(Value) -> erlang:atom_to_binary(Value, utf8);
asKey(Value) when erlang:is_binary(Value) -> Value;
@ -1507,9 +1449,7 @@ parseArrayElements(DataBin, AccList) ->
parseArrWithIndexTable(1, DataBin) ->
<<SumSize:8/integer-little-unsigned, Count:8/integer-little-unsigned, RestBin/binary>> = DataBin,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 3 - ZerosSize - Count,
<<ArrData:ArrSize/binary, _Index:Count/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
@ -1517,9 +1457,7 @@ parseArrWithIndexTable(1, DataBin) ->
parseArrWithIndexTable(2, DataBin) ->
<<SumSize:16/integer-little-unsigned, Count:16/integer-little-unsigned, RestBin/binary>> = DataBin,
IndexSize = 2 * Count,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 5 - ZerosSize - IndexSize,
<<ArrData:ArrSize/binary, _Index:IndexSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
@ -1527,9 +1465,7 @@ parseArrWithIndexTable(2, DataBin) ->
parseArrWithIndexTable(4, DataBin) ->
<<SumSize:32/integer-little-unsigned, Count:32/integer-little-unsigned, RestBin/binary>> = DataBin,
IndexSize = 4 * Count,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 9 - ZerosSize - IndexSize,
<<ArrData:ArrSize/binary, _Index:IndexSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
@ -1546,36 +1482,28 @@ parseArrWithIndexTable(8, DataBin) ->
parseArrWithoutIndexTable(1, DataBin) ->
<<SumSize:8/integer-little-unsigned, RestBin/binary>> = DataBin,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 2 - ZerosSize,
<<ArrData:ArrSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
{ArrList, LeftBin};
parseArrWithoutIndexTable(2, DataBin) ->
<<SumSize:16/integer-little-unsigned, RestBin/binary>> = DataBin,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 3 - ZerosSize,
<<ArrData:ArrSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
{ArrList, LeftBin};
parseArrWithoutIndexTable(4, DataBin) ->
<<SumSize:32/integer-little-unsigned, RestBin/binary>> = DataBin,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 5 - ZerosSize,
<<ArrData:ArrSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
{ArrList, LeftBin};
parseArrWithoutIndexTable(8, DataBin) ->
<<SumSize:64/integer-little-unsigned, RestBin/binary>> = DataBin,
DataSize = erlang:byte_size(RestBin),
DataLeftBin = skipZeros(RestBin),
ZerosSize = DataSize - erlang:byte_size(DataLeftBin),
{ZerosSize, DataLeftBin} = skipZeros(RestBin, 0),
ArrSize = SumSize - 9 - ZerosSize,
<<ArrData:ArrSize/binary, LeftBin/binary>> = DataLeftBin,
ArrList = parseArrayElements(ArrData, []),
@ -1662,4 +1590,8 @@ parseObjMembers(Length, Obj, DataBin) ->
skipZeros(<<0/integer, LeftBin/binary>>) ->
skipZeros(LeftBin);
skipZeros(DataBin) -> DataBin.
skipZeros(DataBin) -> DataBin.
skipZeros(<<0/integer, LeftBin/binary>>, Cnt) ->
skipZeros(LeftBin, Cnt + 1);
skipZeros(DataBin, Cnt) -> {Cnt, DataBin}.

+ 52
- 52
src/enTest.erl View File

@ -17,47 +17,47 @@ test() ->
end.
do() ->
<<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),
<<192, 11, 72, 97, 108, 108, 111, 32, 87, 101, 108, 116, 33>> = eVPack:encodeBin(<<"Hallo Welt!">>),
<<192, 12, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33>> = eVPack:encodeBin(<<"Hello World!">>),
<<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(minKey),
<<31>> = eVPack:encode(maxKey),
<<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),
<<192, 11, 72, 97, 108, 108, 111, 32, 87, 101, 108, 116, 33>> = eVPack:encode(<<"Hallo Welt!">>),
<<192, 12, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33>> = eVPack:encode(<<"Hello World!">>),
_Str = <<"Lorem ipsum dolor sit amet, consectetuer "
"adipiscing elit. Aenean commodo ligula "
"eget dolor. ",
@ -104,21 +104,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:encodeBin(Str),
%%StrBin = eVPack:encode(Str),
<<1>> = eVPack:encodeBin([]),
<<1>> = eVPack:encode([]),
<<19, 6, 49, 40, 16, 2>> = eVPack:encodeBin([1, 16], ?VpArrYc, ?VpObjDef),
<<19, 6, 49, 40, 16, 2>> = eVPack:encode([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>> = eVPack:encodeBin(ArrList, ?VpArrYc, ?VpObjDef),
<<19, _/binary>> = eVPack:encode(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:encodeBin(ArrsBin),
<<10>> = eVPack:encodeBin(#{}),
<<11, 8, 1, 65, 97, 65, 98, 3>> = eVPack:encodeBin(#{<<"a">> => <<"b">>}),
<<11, 13, 2, 65, 97, 65, 98, 65, 98, 65, 97, 3, 7>> = eVPack:encodeBin(#{a => <<"b">>, b => <<"a">>}),
ArrLists = eVPack:encode(ArrsBin),
<<10>> = eVPack:encode(#{}),
<<11,9,1,65,97,192,1,98,3>> = eVPack:encode(#{<<"a">> => <<"b">>}),
<<11,15,2,65,97,192,1,98,65,98,192,1,97, 3,8>> = eVPack:encode(#{a => <<"b">>, b => <<"a">>}),
Maps = #{<<"0">> =>
#{<<"0">> => <<"test">>, <<"1">> => <<"test">>,
<<"2">> => <<"test">>, <<"3">> => <<"test">>,
@ -148,7 +148,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:encodeBin(Maps, ?VpArrDef, ?VpObjNcYs),
MapBin = eVPack:encode(Maps, ?VpArrDef, ?VpObjNcYs),
Mapss = #{<<"0">> =>
#{<<"0">> => <<"test">>, <<"1">> => <<"test">>,
<<"2">> => <<"test">>, <<"3">> => <<"test">>,
@ -242,8 +242,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:encodeBin(Mapss, ?VpArrDef, ?VpObjNcYs),
MapsBin = eVPack:encode(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:encodeBin(MapCom, ?VpArrDef, ?VpObjYc).
MapComBin = eVPack:encode(MapCom, ?VpArrDef, ?VpObjYc).

Loading…
Cancel
Save