MCPcopy Create free account
hub / github.com/apache/fory / write_union_value_data

Function write_union_value_data

cpp/fory/serialization/union_serializer.h:799–840  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

797
798template <typename T>
799inline void write_union_value_data(const T &value, WriteContext &ctx,
800 uint32_t type_id) {
801 using Inner = union_unwrap_optional_inner_t<T>;
802 const Inner &inner = unwrap_union_value(value);
803 if constexpr (std::is_integral_v<Inner> || std::is_enum_v<Inner>) {
804 switch (static_cast<TypeId>(type_id)) {
805 case TypeId::VAR_UINT32:
806 ctx.write_var_uint32(static_cast<uint32_t>(inner));
807 return;
808 case TypeId::UINT32:
809 ctx.buffer().write_int32(static_cast<int32_t>(inner));
810 return;
811 case TypeId::VAR_UINT64:
812 ctx.write_var_uint64(static_cast<uint64_t>(inner));
813 return;
814 case TypeId::UINT64:
815 ctx.buffer().write_int64(static_cast<int64_t>(inner));
816 return;
817 case TypeId::TAGGED_UINT64:
818 ctx.write_tagged_uint64(static_cast<uint64_t>(inner));
819 return;
820 case TypeId::VARINT32:
821 ctx.write_var_int32(static_cast<int32_t>(inner));
822 return;
823 case TypeId::INT32:
824 ctx.buffer().write_int32(static_cast<int32_t>(inner));
825 return;
826 case TypeId::VARINT64:
827 ctx.write_var_int64(static_cast<int64_t>(inner));
828 return;
829 case TypeId::INT64:
830 ctx.buffer().write_int64(static_cast<int64_t>(inner));
831 return;
832 case TypeId::TAGGED_INT64:
833 ctx.write_tagged_int64(static_cast<int64_t>(inner));
834 return;
835 default:
836 break;
837 }
838 }
839 Serializer<Inner>::write_data(inner, ctx);
840}
841
842template <typename T>
843inline T read_union_value_data(ReadContext &ctx, uint32_t type_id) {

Callers 1

write_dataMethod · 0.85

Calls 10

write_dataFunction · 0.85
write_var_uint32Method · 0.45
write_int32Method · 0.45
bufferMethod · 0.45
write_var_uint64Method · 0.45
write_int64Method · 0.45
write_tagged_uint64Method · 0.45
write_var_int32Method · 0.45
write_var_int64Method · 0.45
write_tagged_int64Method · 0.45

Tested by

no test coverage detected