39 if(buffer_pos + input_size >= main_block_mod + final_minimum)
41 size_t to_copy = std::min<size_t>(buffer.size() - buffer_pos, input_size);
43 copy_mem(&buffer[buffer_pos], input, to_copy);
44 buffer_pos += to_copy;
47 input_size -= to_copy;
49 size_t total_to_consume =
51 buffer_pos + input_size - final_minimum),
56 buffer_pos -= total_to_consume;
58 copy_mem(&buffer[0], &buffer[total_to_consume], buffer_pos);
61 if(input_size >= final_minimum)
63 size_t full_blocks = (input_size - final_minimum) / main_block_mod;
64 size_t to_copy = full_blocks * main_block_mod;
71 input_size -= to_copy;
75 copy_mem(&buffer[buffer_pos], input, input_size);
76 buffer_pos += input_size;
84 if(buffer_pos < final_minimum)
85 throw std::runtime_error(
"Buffered filter end_msg without enough input");
87 size_t spare_blocks = (buffer_pos - final_minimum) / main_block_mod;
91 size_t spare_bytes = main_block_mod * spare_blocks;