1cb93a386Sopenharmony_ci#ifndef BROTLI_RESEARCH_DEORUMMOLAE_H_
2cb93a386Sopenharmony_ci#define BROTLI_RESEARCH_DEORUMMOLAE_H_
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_ci#include <cstddef>
5cb93a386Sopenharmony_ci#include <cstdint>
6cb93a386Sopenharmony_ci#include <string>
7cb93a386Sopenharmony_ci#include <vector>
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ci/* log2(maximal number of files). Value 6 provides some speedups. */
10cb93a386Sopenharmony_ci#define DM_LOG_MAX_FILES 6
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci/* Non tunable definitions. */
13cb93a386Sopenharmony_ci#define DM_MAX_FILES (1 << DM_LOG_MAX_FILES)
14cb93a386Sopenharmony_ci
15cb93a386Sopenharmony_ci/**
16cb93a386Sopenharmony_ci * Generate a dictionary for given samples.
17cb93a386Sopenharmony_ci *
18cb93a386Sopenharmony_ci * @param dictionary_size_limit maximal dictionary size
19cb93a386Sopenharmony_ci * @param sample_sizes vector with sample sizes
20cb93a386Sopenharmony_ci * @param sample_data concatenated samples
21cb93a386Sopenharmony_ci * @return generated dictionary
22cb93a386Sopenharmony_ci */
23cb93a386Sopenharmony_cistd::string DM_generate(size_t dictionary_size_limit,
24cb93a386Sopenharmony_ci    const std::vector<size_t>& sample_sizes, const uint8_t* sample_data);
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci#endif  // BROTLI_RESEARCH_DEORUMMOLAE_H_
27