Current section

Files

Jump to
h2 include h2_hpack_huffman.hrl
Raw

include/h2_hpack_huffman.hrl

%% @doc HPACK Huffman Encoding Table (RFC 7541 Appendix B)
%%
%% Each entry is {Symbol, Code, BitLength}
%%
-ifndef(H2_HPACK_HUFFMAN_HRL).
-define(H2_HPACK_HUFFMAN_HRL, 1).
%% Huffman encoding table: {Symbol, HuffmanCode, BitLength}
-define(HUFFMAN_ENCODE_TABLE, [
{ 0, 16#1ff8, 13},
{ 1, 16#7fffd8, 23},
{ 2, 16#fffffe2, 28},
{ 3, 16#fffffe3, 28},
{ 4, 16#fffffe4, 28},
{ 5, 16#fffffe5, 28},
{ 6, 16#fffffe6, 28},
{ 7, 16#fffffe7, 28},
{ 8, 16#fffffe8, 28},
{ 9, 16#ffffea, 24},
{ 10, 16#3ffffffc, 30},
{ 11, 16#fffffe9, 28},
{ 12, 16#fffffea, 28},
{ 13, 16#3ffffffd, 30},
{ 14, 16#fffffeb, 28},
{ 15, 16#fffffec, 28},
{ 16, 16#fffffed, 28},
{ 17, 16#fffffee, 28},
{ 18, 16#fffffef, 28},
{ 19, 16#ffffff0, 28},
{ 20, 16#ffffff1, 28},
{ 21, 16#ffffff2, 28},
{ 22, 16#3ffffffe, 30},
{ 23, 16#ffffff3, 28},
{ 24, 16#ffffff4, 28},
{ 25, 16#ffffff5, 28},
{ 26, 16#ffffff6, 28},
{ 27, 16#ffffff7, 28},
{ 28, 16#ffffff8, 28},
{ 29, 16#ffffff9, 28},
{ 30, 16#ffffffa, 28},
{ 31, 16#ffffffb, 28},
{ 32, 16#14, 6}, %% ' ' (space)
{ 33, 16#3f8, 10}, %% '!'
{ 34, 16#3f9, 10}, %% '"'
{ 35, 16#ffa, 12}, %% '#'
{ 36, 16#1ff9, 13}, %% '$'
{ 37, 16#15, 6}, %% '%'
{ 38, 16#f8, 8}, %% '&'
{ 39, 16#7fa, 11}, %% '''
{ 40, 16#3fa, 10}, %% '('
{ 41, 16#3fb, 10}, %% ')'
{ 42, 16#f9, 8}, %% '*'
{ 43, 16#7fb, 11}, %% '+'
{ 44, 16#fa, 8}, %% ','
{ 45, 16#16, 6}, %% '-'
{ 46, 16#17, 6}, %% '.'
{ 47, 16#18, 6}, %% '/'
{ 48, 16#0, 5}, %% '0'
{ 49, 16#1, 5}, %% '1'
{ 50, 16#2, 5}, %% '2'
{ 51, 16#19, 6}, %% '3'
{ 52, 16#1a, 6}, %% '4'
{ 53, 16#1b, 6}, %% '5'
{ 54, 16#1c, 6}, %% '6'
{ 55, 16#1d, 6}, %% '7'
{ 56, 16#1e, 6}, %% '8'
{ 57, 16#1f, 6}, %% '9'
{ 58, 16#5c, 7}, %% ':'
{ 59, 16#fb, 8}, %% ';'
{ 60, 16#7ffc, 15}, %% '<'
{ 61, 16#20, 6}, %% '='
{ 62, 16#ffb, 12}, %% '>'
{ 63, 16#3fc, 10}, %% '?'
{ 64, 16#1ffa, 13}, %% '@'
{ 65, 16#21, 6}, %% 'A'
{ 66, 16#5d, 7}, %% 'B'
{ 67, 16#5e, 7}, %% 'C'
{ 68, 16#5f, 7}, %% 'D'
{ 69, 16#60, 7}, %% 'E'
{ 70, 16#61, 7}, %% 'F'
{ 71, 16#62, 7}, %% 'G'
{ 72, 16#63, 7}, %% 'H'
{ 73, 16#64, 7}, %% 'I'
{ 74, 16#65, 7}, %% 'J'
{ 75, 16#66, 7}, %% 'K'
{ 76, 16#67, 7}, %% 'L'
{ 77, 16#68, 7}, %% 'M'
{ 78, 16#69, 7}, %% 'N'
{ 79, 16#6a, 7}, %% 'O'
{ 80, 16#6b, 7}, %% 'P'
{ 81, 16#6c, 7}, %% 'Q'
{ 82, 16#6d, 7}, %% 'R'
{ 83, 16#6e, 7}, %% 'S'
{ 84, 16#6f, 7}, %% 'T'
{ 85, 16#70, 7}, %% 'U'
{ 86, 16#71, 7}, %% 'V'
{ 87, 16#72, 7}, %% 'W'
{ 88, 16#fc, 8}, %% 'X'
{ 89, 16#73, 7}, %% 'Y'
{ 90, 16#fd, 8}, %% 'Z'
{ 91, 16#1ffb, 13}, %% '['
{ 92, 16#7fff0, 19}, %% '\'
{ 93, 16#1ffc, 13}, %% ']'
{ 94, 16#3ffc, 14}, %% '^'
{ 95, 16#22, 6}, %% '_'
{ 96, 16#7ffd, 15}, %% '`'
{ 97, 16#3, 5}, %% 'a'
{ 98, 16#23, 6}, %% 'b'
{ 99, 16#4, 5}, %% 'c'
{100, 16#24, 6}, %% 'd'
{101, 16#5, 5}, %% 'e'
{102, 16#25, 6}, %% 'f'
{103, 16#26, 6}, %% 'g'
{104, 16#27, 6}, %% 'h'
{105, 16#6, 5}, %% 'i'
{106, 16#74, 7}, %% 'j'
{107, 16#75, 7}, %% 'k'
{108, 16#28, 6}, %% 'l'
{109, 16#29, 6}, %% 'm'
{110, 16#2a, 6}, %% 'n'
{111, 16#7, 5}, %% 'o'
{112, 16#2b, 6}, %% 'p'
{113, 16#76, 7}, %% 'q'
{114, 16#2c, 6}, %% 'r'
{115, 16#8, 5}, %% 's'
{116, 16#9, 5}, %% 't'
{117, 16#2d, 6}, %% 'u'
{118, 16#77, 7}, %% 'v'
{119, 16#78, 7}, %% 'w'
{120, 16#79, 7}, %% 'x'
{121, 16#7a, 7}, %% 'y'
{122, 16#7b, 7}, %% 'z'
{123, 16#7ffe, 15}, %% '{'
{124, 16#7fc, 11}, %% '|'
{125, 16#3ffd, 14}, %% '}'
{126, 16#1ffd, 13}, %% '~'
{127, 16#ffffffc, 28},
{128, 16#fffe6, 20},
{129, 16#3fffd2, 22},
{130, 16#fffe7, 20},
{131, 16#fffe8, 20},
{132, 16#3fffd3, 22},
{133, 16#3fffd4, 22},
{134, 16#3fffd5, 22},
{135, 16#7fffd9, 23},
{136, 16#3fffd6, 22},
{137, 16#7fffda, 23},
{138, 16#7fffdb, 23},
{139, 16#7fffdc, 23},
{140, 16#7fffdd, 23},
{141, 16#7fffde, 23},
{142, 16#ffffeb, 24},
{143, 16#7fffdf, 23},
{144, 16#ffffec, 24},
{145, 16#ffffed, 24},
{146, 16#3fffd7, 22},
{147, 16#7fffe0, 23},
{148, 16#ffffee, 24},
{149, 16#7fffe1, 23},
{150, 16#7fffe2, 23},
{151, 16#7fffe3, 23},
{152, 16#7fffe4, 23},
{153, 16#1fffdc, 21},
{154, 16#3fffd8, 22},
{155, 16#7fffe5, 23},
{156, 16#3fffd9, 22},
{157, 16#7fffe6, 23},
{158, 16#7fffe7, 23},
{159, 16#ffffef, 24},
{160, 16#3fffda, 22},
{161, 16#1fffdd, 21},
{162, 16#fffe9, 20},
{163, 16#3fffdb, 22},
{164, 16#3fffdc, 22},
{165, 16#7fffe8, 23},
{166, 16#7fffe9, 23},
{167, 16#1fffde, 21},
{168, 16#7fffea, 23},
{169, 16#3fffdd, 22},
{170, 16#3fffde, 22},
{171, 16#fffff0, 24},
{172, 16#1fffdf, 21},
{173, 16#3fffdf, 22},
{174, 16#7fffeb, 23},
{175, 16#7fffec, 23},
{176, 16#1fffe0, 21},
{177, 16#1fffe1, 21},
{178, 16#3fffe0, 22},
{179, 16#1fffe2, 21},
{180, 16#7fffed, 23},
{181, 16#3fffe1, 22},
{182, 16#7fffee, 23},
{183, 16#7fffef, 23},
{184, 16#fffea, 20},
{185, 16#3fffe2, 22},
{186, 16#3fffe3, 22},
{187, 16#3fffe4, 22},
{188, 16#7ffff0, 23},
{189, 16#3fffe5, 22},
{190, 16#3fffe6, 22},
{191, 16#7ffff1, 23},
{192, 16#3ffffe0, 26},
{193, 16#3ffffe1, 26},
{194, 16#fffeb, 20},
{195, 16#7fff1, 19},
{196, 16#3fffe7, 22},
{197, 16#7ffff2, 23},
{198, 16#3fffe8, 22},
{199, 16#1ffffec, 25},
{200, 16#3ffffe2, 26},
{201, 16#3ffffe3, 26},
{202, 16#3ffffe4, 26},
{203, 16#7ffffde, 27},
{204, 16#7ffffdf, 27},
{205, 16#3ffffe5, 26},
{206, 16#fffff1, 24},
{207, 16#1ffffed, 25},
{208, 16#7fff2, 19},
{209, 16#1fffe3, 21},
{210, 16#3ffffe6, 26},
{211, 16#7ffffe0, 27},
{212, 16#7ffffe1, 27},
{213, 16#3ffffe7, 26},
{214, 16#7ffffe2, 27},
{215, 16#fffff2, 24},
{216, 16#1fffe4, 21},
{217, 16#1fffe5, 21},
{218, 16#3ffffe8, 26},
{219, 16#3ffffe9, 26},
{220, 16#ffffffd, 28},
{221, 16#7ffffe3, 27},
{222, 16#7ffffe4, 27},
{223, 16#7ffffe5, 27},
{224, 16#fffec, 20},
{225, 16#fffff3, 24},
{226, 16#fffed, 20},
{227, 16#1fffe6, 21},
{228, 16#3fffe9, 22},
{229, 16#1fffe7, 21},
{230, 16#1fffe8, 21},
{231, 16#7ffff3, 23},
{232, 16#3fffea, 22},
{233, 16#3fffeb, 22},
{234, 16#1ffffee, 25},
{235, 16#1ffffef, 25},
{236, 16#fffff4, 24},
{237, 16#fffff5, 24},
{238, 16#3ffffea, 26},
{239, 16#7ffff4, 23},
{240, 16#3ffffeb, 26},
{241, 16#7ffffe6, 27},
{242, 16#3ffffec, 26},
{243, 16#3ffffed, 26},
{244, 16#7ffffe7, 27},
{245, 16#7ffffe8, 27},
{246, 16#7ffffe9, 27},
{247, 16#7ffffea, 27},
{248, 16#7ffffeb, 27},
{249, 16#ffffffe, 28},
{250, 16#7ffffec, 27},
{251, 16#7ffffed, 27},
{252, 16#7ffffee, 27},
{253, 16#7ffffef, 27},
{254, 16#7fffff0, 27},
{255, 16#3ffffee, 26},
{256, 16#3fffffff, 30} %% EOS (End of String)
]).
-endif.