| 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 | |