#include "quiche/http2/hpack/huffman/hpack_huffman_decoder.h"
#include <bitset>
#include <limits>
#include <ostream>
#include <sstream>
#include <string>
#include "quiche/common/platform/api/quiche_logging.h"
namespace http2 {
namespace {
HuffmanCode;
HuffmanCodeBitCount;
HuffmanCodeBitSet;
HuffmanAccumulatorBitSet;
static constexpr HuffmanCodeBitCount kMinCodeBitCount = …;
static constexpr HuffmanCodeBitCount kMaxCodeBitCount = …;
static constexpr HuffmanCodeBitCount kHuffmanCodeBitCount = …;
static_assert …;
static_assert …;
static constexpr HuffmanAccumulatorBitCount kHuffmanAccumulatorBitCount = …;
static constexpr HuffmanAccumulatorBitCount kExtraAccumulatorBitCount = …;
struct PrefixInfo { … };
inline std::ostream& operator<<(std::ostream& out, const PrefixInfo& v) { … }
PrefixInfo PrefixToInfo(HuffmanCode value) { … }
constexpr unsigned char kCanonicalToSymbol[] = …;
constexpr size_t kShortCodeTableSize = …;
struct ShortCodeInfo { … } kShortCodeTable[kShortCodeTableSize] = …;
}
HuffmanBitBuffer::HuffmanBitBuffer() { … }
void HuffmanBitBuffer::Reset() { … }
size_t HuffmanBitBuffer::AppendBytes(absl::string_view input) { … }
HuffmanAccumulatorBitCount HuffmanBitBuffer::free_count() const { … }
void HuffmanBitBuffer::ConsumeBits(HuffmanAccumulatorBitCount code_length) { … }
bool HuffmanBitBuffer::InputProperlyTerminated() const { … }
std::string HuffmanBitBuffer::DebugString() const { … }
HpackHuffmanDecoder::HpackHuffmanDecoder() = default;
HpackHuffmanDecoder::~HpackHuffmanDecoder() = default;
bool HpackHuffmanDecoder::Decode(absl::string_view input, std::string* output) { … }
std::string HpackHuffmanDecoder::DebugString() const { … }
}