1 // Copyright (c) 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_HTTP2_HPACK_HUFFMAN_HUFFMAN_SPEC_TABLES_H_ 6 #define QUICHE_HTTP2_HPACK_HUFFMAN_HUFFMAN_SPEC_TABLES_H_ 7 8 // Tables describing the Huffman encoding of bytes as specified by RFC7541. 9 10 #include <cstdint> 11 12 #include "quiche/common/platform/api/quiche_export.h" 13 14 namespace http2 { 15 16 struct QUICHE_EXPORT HuffmanSpecTables { 17 // Number of bits in the encoding of each symbol (byte). 18 static const uint8_t kCodeLengths[257]; 19 20 // The encoding of each symbol, right justified (as printed), which means that 21 // the last bit of the encoding is the low-order bit of the uint32. 22 static const uint32_t kRightCodes[257]; 23 24 // The encoding of each symbol, left justified (as printed), which means that 25 // the first bit of the encoding is the high-order bit of the uint32. 26 static const uint32_t kLeftCodes[257]; 27 }; 28 29 } // namespace http2 30 31 #endif // QUICHE_HTTP2_HPACK_HUFFMAN_HUFFMAN_SPEC_TABLES_H_ 32