From ec3244324cc52d4d72e42bfd7bb62929f057efe2 Mon Sep 17 00:00:00 2001
From: Danilo Piparo <danilo.piparo@cern.ch>
Date: Tue, 3 Oct 2017 15:31:18 +0200
Subject: [PATCH] [TDF] Simplify Take ret type and treatment of types needed by
 Take and Cache

---
 tree/treeplayer/inc/ROOT/TDFInterface.hxx | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/tree/treeplayer/inc/ROOT/TDFInterface.hxx b/tree/treeplayer/inc/ROOT/TDFInterface.hxx
index 2913173a971..b62ae5d96f3 100644
--- a/tree/treeplayer/inc/ROOT/TDFInterface.hxx
+++ b/tree/treeplayer/inc/ROOT/TDFInterface.hxx
@@ -247,17 +247,15 @@ struct TakeRealTypes {
    // E.g. if a vector<V> was the selected collection, where V is array_view<T>,
    // the collection becomes vector<vector<T>>.
    static constexpr auto isAV = TDFInternal::IsArrayView_t<T>::value;
-   using ValueType_t = typename TDFInternal::ValueType<T>::value_type;
-   using ValueTypeColl_t = std::vector<ValueType_t>;
+   using RealT_t = typename TDFInternal::ValueType<T>::value_type;
+   using VTColl_t = std::vector<RealT_t>;
 
    using NewC0_t =
-      typename std::conditional<isAV && TDFInternal::IsVector_t<COLL>::value, std::vector<ValueTypeColl_t>, COLL>::type;
-   using NewC1_t = typename std::conditional<isAV && TDFInternal::IsList_t<NewC0_t>::value, std::list<ValueTypeColl_t>,
-                                             NewC0_t>::type;
-   using NewC2_t = typename std::conditional<isAV && TDFInternal::IsDeque_t<NewC1_t>::value,
-                                             std::deque<ValueTypeColl_t>, NewC1_t>::type;
-
-   using RealT_t = typename std::conditional<isAV, ValueType_t, T>::type;
+      typename std::conditional<isAV && TDFInternal::IsVector_t<COLL>::value, std::vector<VTColl_t>, COLL>::type;
+   using NewC1_t =
+      typename std::conditional<isAV && TDFInternal::IsList_t<NewC0_t>::value, std::list<VTColl_t>, NewC0_t>::type;
+   using NewC2_t =
+      typename std::conditional<isAV && TDFInternal::IsDeque_t<NewC1_t>::value, std::deque<VTColl_t>, NewC1_t>::type;
    using RealColl_t = NewC2_t;
 };
 
@@ -875,7 +873,7 @@ public:
    /// This action is *lazy*: upon invocation of this method the calculation is
    /// booked but not executed. See TResultProxy documentation.
    template <typename T, typename COLL = std::vector<T>>
-   auto Take(std::string_view column = "") -> TResultProxy<typename TDFDetail::TakeRealTypes<T, COLL>::RealColl_t>
+   TResultProxy<typename TDFDetail::TakeRealTypes<T, COLL>::RealColl_t> Take(std::string_view column = "")
    {
       auto loopManager = GetDataFrameChecked();
       const auto columns = column.empty() ? ColumnNames_t() : ColumnNames_t({std::string(column)});
-- 
GitLab