@@ -555,13 +555,7 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
555555 }
556556
557557 // !\brief Overload for n_fmt.
558- void set_core_n_fmt (auto & field)
559- {
560- if constexpr (detail::genotypes_vcf_style_writer_concept<decltype (field)>)
561- record_core.n_fmt = std::ranges::distance (detail::get_first (field));
562- else
563- record_core.n_fmt = detail::range_or_tuple_size (field);
564- }
558+ void set_core_n_fmt (auto & field) { record_core.n_fmt = detail::range_or_tuple_size (field); }
565559 // !\}
566560
567561 /* !\name Field writers
@@ -651,7 +645,7 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
651645 // explicit integer width given in header
652646 if (hdr_entry.other_fields .find (" IntegerBits" ) != hdr_entry.other_fields .end ())
653647 {
654- desc = detail::dynamic_type_id_2_type_descriptor (hdr_entry.type );
648+ desc = detail::value_type_id_2_type_descriptor (hdr_entry.type );
655649 if (!detail::type_descriptor_is_int (desc)) // ignore header value if it isn't intX
656650 desc = c_desc;
657651 }
@@ -665,7 +659,7 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
665659
666660 if (verify_header_types)
667661 {
668- detail::bcf_type_descriptor header_desc = detail::dynamic_type_id_2_type_descriptor (hdr_entry.type );
662+ detail::bcf_type_descriptor header_desc = detail::value_type_id_2_type_descriptor (hdr_entry.type );
669663 if (desc != header_desc || !detail::type_descriptor_is_int (desc) ||
670664 !detail::type_descriptor_is_int (header_desc))
671665 {
@@ -707,7 +701,7 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
707701 var_io::header::info_t const & info = header->infos .at (header->idx_to_info_pos ().at (idx));
708702
709703 /* VALUE */
710- if constexpr (detail::is_dynamic_type <value_t >)
704+ if constexpr (detail::is_info_element_value_type <value_t >)
711705 {
712706 auto func = [&](auto & param) { write_typed_data (param, get_desc (param, info)); };
713707 std::visit (func, value);
@@ -950,15 +944,15 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
950944 }
951945 };
952946
953- if constexpr (detail::is_dynamic_vector_type <value_t >)
947+ if constexpr (detail::is_genotype_element_value_type <value_t >)
954948 std::visit (func, value);
955949 else
956950 func (value);
957951 }
958952
959- // !\brief Overload for GENOTYPES; genotypes_bcf_style .
953+ // !\brief Overload for GENOTYPES.
960954 template <std::ranges::forward_range range_t >
961- requires (detail::genotype_bcf_style_writer_concept <std::ranges::range_reference_t <range_t >>)
955+ requires (detail::genotype_writer_concept <std::ranges::range_reference_t <range_t >>)
962956 void write_field (vtag_t <field::genotypes> /* */ , range_t && range)
963957 {
964958 for (auto && genotype : range)
@@ -967,13 +961,12 @@ class format_output_handler<bcf> : public format_output_handler_base<format_outp
967961
968962 // !\brief Overload for GENOTYPES; tuple of pairs.
969963 template <typename ... elem_ts>
970- requires (detail::genotype_bcf_style_writer_concept <elem_ts> &&...)
964+ requires (detail::genotype_writer_concept <elem_ts> &&...)
971965 void write_field (vtag_t <field::genotypes> /* */ , std::tuple<elem_ts...> & tup) // TODO add const version
972966 {
973967 auto func = [&](auto &... field) { (write_genotypes_element (field), ...); };
974968 std::apply (func, tup);
975969 }
976- // TODO vcf-style
977970 // !\}
978971
979972 // !\brief Write the header.
0 commit comments