output_container(Container& cont, std::vector<serialization_chunk>* chunks, binary_filter* filter) : cont_(cont), current_(0), start_compressing_at_(0), filter_(0), chunks_(chunks), current_chunk_(std::size_t(-1)) { if (chunks_) { // reuse chunks, if possible if (chunks->empty()) chunks_->push_back(create_index_chunk(0, 0)); else (*chunks_)[0] = create_index_chunk(0, 0); current_chunk_ = 0; } }
void save_binary(void const* address, std::size_t count) // override { HPX_ASSERT(count != 0); { if (filter_) { filter_->save(address, count); } else { // make sure there is a current serialization_chunk descriptor // available if (chunks_) { HPX_ASSERT(get_num_chunks() > current_chunk_); if (get_chunk_type(current_chunk_) == chunk_type_pointer || get_chunk_size(current_chunk_) != 0) { // add a new serialization_chunk chunks_->push_back(create_index_chunk(current_, 0)); ++current_chunk_; } } if (cont_.size() < current_ + count) cont_.resize(cont_.size() + count); if (count == 1) cont_[current_] = *static_cast<unsigned char const*>(address); else std::memcpy(&cont_[current_], address, count); } current_ += count; } }
void save_binary(void const* address, std::size_t count) // override { HPX_ASSERT(count != 0); { if (filter_) { filter_->save(address, count); } else { // make sure there is a current serialization_chunk descriptor // available if (chunks_) { HPX_ASSERT(get_num_chunks() > current_chunk_); if (get_chunk_type(current_chunk_) == chunk_type_pointer || get_chunk_size(current_chunk_) != 0) { // add a new serialization_chunk, reuse chunks, // if possible // the chunk size will be set at the end if (chunks_->size() <= current_chunk_ + 1) { chunks_->push_back( create_index_chunk(current_, 0)); ++current_chunk_; } else { (*chunks_)[++current_chunk_] = create_index_chunk(current_, 0); } } } if (cont_.size() < current_ + count) cont_.resize(cont_.size() + count); detail::access_data<Container>::write( cont_, count, current_, address); } current_ += count; } }
output_container(Container& cont, std::vector<serialization_chunk>* chunks, binary_filter* filter) : cont_(cont), current_(0), start_compressing_at_(0), filter_(0), chunks_(chunks), current_chunk_(std::size_t(-1)) { if (chunks_) { chunks_->clear(); chunks_->push_back(create_index_chunk(0, 0)); current_chunk_ = 0; } }