(
defn-
decode-encoding
[
^
ByteBuffer
bb
]
(
let
[
codec-id
(
itf8/decode-itf8
bb
)
_n
(
itf8/decode-itf8
bb
)
]
(
case
codec-id
0
{
:codec
:null
}
1
(
let
[
content-id
(
itf8/decode-itf8
bb
)
]
{
:codec
:external
:content-id
content-id
}
)
3
(
let
[
alphabet
(
decode-itf8-array
bb
)
bit-len
(
decode-itf8-array
bb
)
]
{
:codec
:huffman
,
:alphabet
alphabet
,
:bit-len
bit-len
}
)
4
(
let
[
len-encoding
(
decode-encoding
bb
)
val-encoding
(
decode-encoding
bb
)
]
{
:codec
:byte-array-len
,
:len-encoding
len-encoding
,
:val-encoding
val-encoding
}
)
5
(
let
[
stop-byte
(
.get
bb
)
external-id
(
itf8/decode-itf8
bb
)
]
{
:codec
:byte-array-stop
,
:stop-byte
stop-byte
,
:external-id
external-id
}
)
6
(
let
[
offset
(
itf8/decode-itf8
bb
)
length
(
itf8/decode-itf8
bb
)
]
{
:codec
:beta
,
:offset
offset
,
:length
length
}
)
7
(
let
[
offset
(
itf8/decode-itf8
bb
)
k
(
itf8/decode-itf8
bb
)
]
{
:codec
:subexp
,
:offset
offset
,
:k
k
}
)
9
(
let
[
offset
(
itf8/decode-itf8
bb
)
]
{
:codec
:gamma
,
:offset
offset
}
)
(
throw
(
ex-info
(
str
"codec "
codec-id
" not supported"
)
{
}
)
)
)
)
)