--- /dev/null
+/* Copyright 2013 Google Inc. All Rights Reserved.\r
+\r
+ Distributed under MIT license.\r
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
+*/\r
+\r
+/* Block split point selection utilities. */\r
+\r
+#ifndef BROTLI_ENC_BLOCK_SPLITTER_H_\r
+#define BROTLI_ENC_BLOCK_SPLITTER_H_\r
+\r
+#include "../common/types.h"\r
+#include "./command.h"\r
+#include "./memory.h"\r
+#include "./port.h"\r
+#include "./quality.h"\r
+\r
+#if defined(__cplusplus) || defined(c_plusplus)\r
+extern "C" {\r
+#endif\r
+\r
+typedef struct BlockSplit {\r
+ size_t num_types; /* Amount of distinct types */\r
+ size_t num_blocks; /* Amount of values in types and length */\r
+ uint8_t* types;\r
+ uint32_t* lengths;\r
+\r
+ size_t types_alloc_size;\r
+ size_t lengths_alloc_size;\r
+} BlockSplit;\r
+\r
+BROTLI_INTERNAL void BrotliInitBlockSplit(BlockSplit* self);\r
+BROTLI_INTERNAL void BrotliDestroyBlockSplit(MemoryManager* m,\r
+ BlockSplit* self);\r
+\r
+BROTLI_INTERNAL void BrotliSplitBlock(MemoryManager* m,\r
+ const Command* cmds,\r
+ const size_t num_commands,\r
+ const uint8_t* data,\r
+ const size_t offset,\r
+ const size_t mask,\r
+ const BrotliEncoderParams* params,\r
+ BlockSplit* literal_split,\r
+ BlockSplit* insert_and_copy_split,\r
+ BlockSplit* dist_split);\r
+\r
+#if defined(__cplusplus) || defined(c_plusplus)\r
+} /* extern "C" */\r
+#endif\r
+\r
+#endif /* BROTLI_ENC_BLOCK_SPLITTER_H_ */\r