|
30 | 30 | [ msgpack//1, % ?Term |
31 | 31 |
|
32 | 32 | msgpack_object//1, % ?Object |
| 33 | + msgpack_key//1, % ?Key |
33 | 34 | msgpack_objects//1, % ?Objects |
34 | 35 |
|
35 | 36 | msgpack_nil//0, |
|
60 | 61 |
|
61 | 62 | % map format family |
62 | 63 | msgpack_map//2, % :OnPair,?Map |
| 64 | + msgpack_map//1, % ?Map |
| 65 | + msgpack_pair//3, % :OnKey,:OnValue,KeyValuePair |
63 | 66 |
|
64 | 67 | % ext format family |
65 | 68 | msgpack_ext//1, % ?Term |
|
120 | 123 | msgpack(str(Str)) --> msgpack_str(Str), !. |
121 | 124 | msgpack(bin(Bin)) --> msgpack_bin(Bin), !. |
122 | 125 | msgpack(array(Array)) --> msgpack_array(msgpack, Array), !. |
123 | | -msgpack(map(Map)) --> msgpack_map(msgpack_pair(msgpack, msgpack), Map), !. |
| 126 | +msgpack(map(Map)) --> msgpack_map(Map), !. |
124 | 127 | msgpack(Term) --> msgpack_ext(Term). |
125 | 128 |
|
126 | 129 | %! msgpack_object(?Object)// is semidet. |
|
620 | 623 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ |
621 | 624 |
|
622 | 625 | %! msgpack_map(:OnPair, ?Map:list)// is semidet. |
| 626 | +%! msgpack_map(?Map:list)// is semidet. |
623 | 627 | % |
624 | 628 | % Unify with Map using OnPair as the pair-wise grammar. |
625 | 629 |
|
626 | 630 | msgpack_map(OnPair, Map) --> msgpack_fixmap(OnPair, Map), !. |
627 | | -msgpack_map(OnPair, Map) --> msgpack_map(OnPair, _, Map), !. |
| 631 | +msgpack_map(OnPair, Map) --> msgpack_map(OnPair, _, Map). |
| 632 | + |
| 633 | +msgpack_map(Map) --> msgpack_map(msgpack_pair(msgpack, msgpack), Map). |
628 | 634 |
|
629 | 635 | msgpack_fixmap(OnPair, Map) --> |
630 | 636 | { var(Map), |
|
668 | 674 | map_width_format(16, 0xde). |
669 | 675 | map_width_format(32, 0xdf). |
670 | 676 |
|
| 677 | +%! msgpack_pair(:OnKey, :OnValue, KeyValuePair)// is semidet. |
| 678 | + |
671 | 679 | msgpack_pair(OnKey, OnValue, Key-Value) --> |
672 | 680 | call(OnKey, Key), |
673 | 681 | call(OnValue, Value). |
|
0 commit comments