+ if (unused_samples_ >= samples) {
+ // All samples fit into the current chunk
+ memcpy(current_chunk_ + (used_samples_ * unit_size_),
+ data, (samples * unit_size_));
+ used_samples_ += samples;
+ unused_samples_ -= samples;
+ } else {
+ // Only a part of the samples fit, split data up between chunks
+ memcpy(current_chunk_ + (used_samples_ * unit_size_),
+ data, (unused_samples_ * unit_size_));
+ const uint64_t remaining_samples = samples - unused_samples_;
+