seqan / product_backlog

This repository is used as product backlog for all SeqAn relevant backlog items. This is intended to organise the work for the team.
2 stars 1 forks source link

move seqan3::views::translate{,_single} to seqan3/alphabet/views/ (separate header) #340

Closed marehr closed 3 years ago

marehr commented 3 years ago

Tasks

From 8a6feaecc8050ad25ad95282a6199740999d9e8b Mon Sep 17 00:00:00 2001
From: marehr <marehr-github@marehr.dialup.fu-berlin.de>
Date: Sun, 18 Apr 2021 12:47:51 +0200
Subject: [PATCH 18/35] TODO: [MISC] move seqan3::views::translate{,_single} to
 seqan3/alphabet/views/ (separate header)

---
 include/seqan3/range/views/translate.hpp | 44 ++++++++++++++++++++----
 1 file changed, 38 insertions(+), 6 deletions(-)

diff --git a/include/seqan3/range/views/translate.hpp b/include/seqan3/range/views/translate.hpp
index d262baf5c..4a3168958 100644
--- a/include/seqan3/range/views/translate.hpp
+++ b/include/seqan3/range/views/translate.hpp
@@ -60,9 +60,12 @@ class view_translate_single;
 namespace seqan3
 {

-//!\brief Specialisation values for single and multiple translation frames.
-//!\implements seqan3::enum_bitwise_operators
-//!\sa seqan3::enum_bitwise_operators enables combining enum values.
+/*!\brief Specialisation values for single and multiple translation frames.
+ * \implements seqan3::enum_bitwise_operators
+ * \sa seqan3::enum_bitwise_operators enables combining enum values.
+ * \details
+ * \experimentalapi{Experimental since version 3.1.}
+ */
 enum class translation_frames : uint8_t
 {
     forward_frame0 = 1, //!< The first forward frame starting at position 0
@@ -494,7 +497,7 @@ namespace seqan3::views
  * | std::ranges::output_range        |                                       | *lost*                                             |
  * | seqan3::const_iterable_range     | *required*                            | *preserved*                                        |
  * |                                  |                                       |                                                    |
- * | std::ranges::range_reference_t   | seqan3::nucleotide_alphabet            | seqan3::aa27                                       |
+ * | std::ranges::range_reference_t   | seqan3::nucleotide_alphabet           | seqan3::aa27                                       |
  *
  * * `urng_t` is the type of the range modified by this view (input).
  * * `rrng_type` is the type of the range returned by this view.
@@ -505,6 +508,9 @@ namespace seqan3::views
  * Operating on a range of seqan3::dna5:
  * \include test/snippet/range/views/translate_dna5.cpp
  * \hideinitializer
+ *
+ * \experimentalapi{Experimental since version 3.1.}
+ * TODO move to seqan3/include/alphabet/views/translate_single.hpp
  */
 inline constexpr auto translate_single = deep{detail::translate_fn<true>{}};

@@ -620,9 +626,20 @@ public:
                  std::ranges::viewable_range<rng_t> &&
                  std::constructible_from<urng_t, std::ranges::ref_view<std::remove_reference_t<rng_t>>>
     //!\endcond
-    view_translate(rng_t && _urange, translation_frames const _tf = translation_frames::SIX_FRAME)
+    view_translate(rng_t && _urange, translation_frames const _tf)
      : view_translate{std::views::all(std::forward<rng_t>(_urange)), _tf}
     {}
+
+    //!\brief \deprecated Please use seqan3::detail::view_translate::view_translate(rng_t &&, translation_frames const)
+    template <typename rng_t>
+    //!\cond
+        requires (!std::same_as<std::remove_cvref_t<rng_t>, view_translate>) &&
+                 std::ranges::viewable_range<rng_t> &&
+                 std::constructible_from<urng_t, std::ranges::ref_view<std::remove_reference_t<rng_t>>>
+    //!\endcond
+    SEQAN3_DEPRECATED_310 view_translate(rng_t && _urange)
+     : view_translate{std::views::all(std::forward<rng_t>(_urange)), translation_frames::SIX_FRAME}
+    {}
     //!\}

     /*!\name Iterators
+ #ifdef SEQAN3_DEPRECATED_310
@@ -738,7 +755,15 @@ template <typename urng_t>
              std::ranges::random_access_range<urng_t> &&
              nucleotide_alphabet<std::ranges::range_reference_t<urng_t>>
 //!\endcond
-view_translate(urng_t &&, translation_frames const = translation_frames{}) -> view_translate<std::views::all_t<urng_t>>;
+view_translate(urng_t &&) -> view_translate<std::views::all_t<urng_t>>;
+#endif // SEQAN3_DEPRECATED_310
+template <typename urng_t>
+//!\cond
+    requires std::ranges::sized_range<urng_t> &&
+             std::ranges::random_access_range<urng_t> &&
+             nucleotide_alphabet<std::ranges::range_reference_t<urng_t>>
+//!\endcond
+view_translate(urng_t &&, translation_frames const) -> view_translate<std::views::all_t<urng_t>>;

 } // namespace seqan3::detail

@@ -793,7 +818,14 @@ namespace seqan3::views
  *
  * Operating on a range of seqan3::dna5:
  * \include test/snippet/range/views/translate_usage.cpp
+ *
+ * \sa seqan3::translate_triplet
+ * \sa seqan3::views::translate_single
+ * \sa seqan3::views::translate_join
  * \hideinitializer
+ *
+ * \experimentalapi{Experimental since version 3.1.}
+ * TODO move to seqan3/include/alphabet/views/translate.hpp
  */
 inline constexpr auto translate = deep{detail::translate_fn<false>{}};
 //!\}
-- 
2.31.1