MCPcopy Create free account
hub / github.com/ablab/spades / deserialize

Method deserialize

ext/include/tsl/array-hash/array_hash.h:590–616  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

588
589 template <class Deserializer>
590 static array_bucket deserialize(Deserializer& deserializer) {
591 array_bucket bucket;
592 const slz_size_type bucket_size_ds =
593 deserialize_value<slz_size_type>(deserializer);
594
595 if (bucket_size_ds == 0) {
596 return bucket;
597 }
598
599 const std::size_t bucket_size = numeric_cast<std::size_t>(
600 bucket_size_ds, "Deserialized bucket_size is too big.");
601 bucket.m_buffer = static_cast<CharT*>(
602 std::malloc(bucket_size * sizeof(CharT) +
603 sizeof_in_buff<decltype(END_OF_BUCKET)>()));
604 if (bucket.m_buffer == nullptr) {
605 throw std::bad_alloc();
606 }
607
608 deserializer(bucket.m_buffer, bucket_size);
609
610 const auto end_of_bucket = END_OF_BUCKET;
611 std::memcpy(bucket.m_buffer + bucket_size, &end_of_bucket,
612 sizeof(end_of_bucket));
613
614 tsl_ah_assert(bucket.size() == bucket_size);
615 return bucket;
616 }
617
618 private:
619 key_size_type as_key_size_type(size_type key_size) const {

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected