bool Encoder::encode()

in hessian2/basic_codec/list_codec.cc [218:238]


bool Encoder::encode(const UntypedListObject& value) {
  values_ref_.emplace(&value, values_ref_.size());
  auto untyped_list = value.toUntypedList();
  ABSL_ASSERT(untyped_list.has_value());
  auto& untyped_list_value = untyped_list.value().get();

  auto len = untyped_list_value.size();

  if (len <= 7) {
    writer_->writeByte(static_cast<uint8_t>(0x78 + len));
  } else {
    writer_->writeByte(static_cast<uint8_t>(0x58));
    encode<int32_t>(len);
  }

  for (size_t i = 0; i < len; i++) {
    encode<Object>(*(untyped_list_value)[i]);
  }

  return true;
}