#ifndef UTIL_STREAM_CONFIG_H #define UTIL_STREAM_CONFIG_H #include #include namespace util { namespace stream { /** * Represents how a chain should be configured. */ struct ChainConfig { /** Constructs an configuration with underspecified (or default) parameters. */ ChainConfig() {} /** * Constructs a chain configuration object. * * @param [in] in_entry_size Number of bytes in each record. * @param [in] in_block_count Number of blocks in the chain. * @param [in] in_total_memory Total number of bytes available to the chain. * This value will be divided amongst the blocks in the chain. */ ChainConfig(std::size_t in_entry_size, std::size_t in_block_count, std::size_t in_total_memory) : entry_size(in_entry_size), block_count(in_block_count), total_memory(in_total_memory) {} /** * Number of bytes in each record. */ std::size_t entry_size; /** * Number of blocks in the chain. */ std::size_t block_count; /** * Total number of bytes available to the chain. * This value will be divided amongst the blocks in the chain. * Chain's constructor will make this a multiple of entry_size. */ std::size_t total_memory; }; /** * Represents how a sorter should be configured. */ struct SortConfig { /** Filename prefix where temporary files should be placed. */ std::string temp_prefix; /** Size of each input/output buffer. */ std::size_t buffer_size; /** Total memory to use when running alone. */ std::size_t total_memory; }; }} // namespaces #endif // UTIL_STREAM_CONFIG_H