diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /web/server/h2o/libh2o/deps/brotli/enc/block_splitter.h | |
parent | Initial commit. (diff) | |
download | netdata-upstream.tar.xz netdata-upstream.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | web/server/h2o/libh2o/deps/brotli/enc/block_splitter.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/deps/brotli/enc/block_splitter.h b/web/server/h2o/libh2o/deps/brotli/enc/block_splitter.h new file mode 100644 index 00000000..bbbfda90 --- /dev/null +++ b/web/server/h2o/libh2o/deps/brotli/enc/block_splitter.h @@ -0,0 +1,61 @@ +/* Copyright 2013 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +// Block split point selection utilities. + +#ifndef BROTLI_ENC_BLOCK_SPLITTER_H_ +#define BROTLI_ENC_BLOCK_SPLITTER_H_ + +#include <vector> + +#include "./command.h" +#include "./metablock.h" +#include "./types.h" + +namespace brotli { + +struct BlockSplitIterator { + explicit BlockSplitIterator(const BlockSplit& split) + : split_(split), idx_(0), type_(0), length_(0) { + if (!split.lengths.empty()) { + length_ = split.lengths[0]; + } + } + + void Next() { + if (length_ == 0) { + ++idx_; + type_ = split_.types[idx_]; + length_ = split_.lengths[idx_]; + } + --length_; + } + + const BlockSplit& split_; + size_t idx_; + size_t type_; + size_t length_; +}; + +void CopyLiteralsToByteArray(const Command* cmds, + const size_t num_commands, + const uint8_t* data, + const size_t offset, + const size_t mask, + std::vector<uint8_t>* literals); + +void SplitBlock(const Command* cmds, + const size_t num_commands, + const uint8_t* data, + const size_t offset, + const size_t mask, + BlockSplit* literal_split, + BlockSplit* insert_and_copy_split, + BlockSplit* dist_split); + +} // namespace brotli + +#endif // BROTLI_ENC_BLOCK_SPLITTER_H_ |