@@ -462,23 +462,26 @@ concept has_ng_metadata = not_void<typename aod::MetadataTraitNG<o2::aod::Hash<s
462462template <typename T>
463463concept spawnable = std::is_same_v<typename T::spawnable_t , std::true_type>;
464464
465- template <typename , typename = void >
466- inline constexpr bool is_soa_extension_table_v = false ;
465+ // template <typename, typename = void>
466+ // inline constexpr bool is_soa_extension_table_v = false;
467+
468+ // template <typename T>
469+ // inline constexpr bool is_soa_extension_table_v<T, std::void_t<decltype(sizeof(typename T::expression_pack_t))>> = true;
467470
468471template <typename T>
469- inline constexpr bool is_soa_extension_table_v<T, std:: void_t < decltype ( sizeof ( typename T::expression_pack_t ))>> = true ;
472+ concept extension_table = not_void< typename T::expression_pack_t > ;
470473
471- template <typename T, typename = void >
472- inline constexpr bool is_index_table_v = false ;
474+ // template <typename T, typename = void>
475+ // inline constexpr bool is_index_table_v = false;
473476
474- template <typename T>
475- inline constexpr bool is_index_table_v<T, std::void_t <decltype (sizeof (typename T::indexing_t ))>> = true ;
477+ // template <typename T>
478+ // inline constexpr bool is_index_table_v<T, std::void_t<decltype(sizeof(typename T::indexing_t))>> = true;
476479
477- template <typename , typename = void >
478- inline constexpr bool is_with_base_table_v = false ;
480+ // template <typename, typename = void>
481+ // inline constexpr bool is_with_base_table_v = false;
479482
480- template <typename T>
481- inline constexpr bool is_with_base_table_v<T, std::void_t <decltype (sizeof (typename T::base_table_t ))>> = true ;
483+ // template <typename T>
484+ // inline constexpr bool is_with_base_table_v<T, std::void_t<decltype(sizeof(typename T::base_table_t))>> = true;
482485
483486template <typename B, typename E>
484487struct EquivalentIndex {
@@ -1852,22 +1855,22 @@ using PresliceOptional = PresliceBase<T, true, true>;
18521855
18531856namespace o2 ::soa
18541857{
1855- template <typename T>
1856- inline consteval bool is_soa_filtered_iterator_v ()
1857- {
1858- if constexpr (!soa::ng_iterator<T>) {
1859- return false ;
1860- } else {
1861- if constexpr (std::is_same_v<typename T::policy_t , soa::FilteredIndexPolicy>) {
1862- return true ;
1863- } else {
1864- return false ;
1865- }
1866- }
1867- }
1858+ // template <typename T>
1859+ // inline consteval bool is_soa_filtered_iterator_v()
1860+ // {
1861+ // if constexpr (!soa::ng_iterator<T>) {
1862+ // return false;
1863+ // } else {
1864+ // if constexpr (std::is_same_v<typename T::policy_t, soa::FilteredIndexPolicy>) {
1865+ // return true;
1866+ // } else {
1867+ // return false;
1868+ // }
1869+ // }
1870+ // }
18681871
1869- template <typename T>
1870- using is_soa_table_t = typename soa::is_specialization_origin<T, soa::Table>;
1872+ // template <typename T>
1873+ // using is_soa_table_t = typename soa::is_specialization_origin<T, soa::Table>;
18711874
18721875template <typename T>
18731876class FilteredBase ;
@@ -1879,8 +1882,8 @@ class FilteredBase;
18791882template <typename T>
18801883class Filtered ;
18811884
1882- template <typename T>
1883- inline constexpr bool is_soa_filtered_v = framework::is_base_of_template_v<soa::FilteredBase, T> || framework::is_base_of_template_v<soa::FilteredBase, T>;
1885+ // template <typename T>
1886+ // inline constexpr bool is_soa_filtered_v = framework::is_base_of_template_v<soa::FilteredBase, T> || framework::is_base_of_template_v<soa::FilteredBase, T>;
18841887
18851888template <typename T>
18861889concept has_filtered_policy = not_void<typename T::policy_t > && std::same_as<typename T::policy_t , soa::FilteredIndexPolicy>;
@@ -1897,6 +1900,10 @@ concept ng_filtered_iterator = ng_iterator<T> && has_filtered_policy<T>;
18971900template <typename T>
18981901concept ng_filtered_table = framework::is_base_of_template_v<soa::FilteredBase, T>;
18991902
1903+ // FIXME: compatbility declaration to be removed
1904+ template <typename T>
1905+ constexpr bool is_soa_filtered_v = ng_filtered_table<T>;
1906+
19001907// template <typename T>
19011908// concept soa_filtered = soa_filtered_table<T> || soa_filtered_iterator<T>;
19021909
@@ -1930,7 +1937,7 @@ auto doSliceBy(T const* table, o2::framework::PresliceBase<C, OPT, SORTED> const
19301937 return t;
19311938 } else {
19321939 auto selection = container.getSliceFor (value);
1933- if constexpr (soa::is_soa_filtered_v <T>) {
1940+ if constexpr (soa::ng_filtered_table <T>) {
19341941 auto t = soa::Filtered<typename T::base_t >({table->asArrowTable ()}, selection);
19351942 table->copyIndexBindings (t);
19361943 t.bindInternalIndicesTo (table);
@@ -1956,7 +1963,7 @@ template <typename T>
19561963auto prepareFilteredSlice (T const * table, std::shared_ptr<arrow::Table> slice, uint64_t offset)
19571964{
19581965 if (offset >= static_cast <uint64_t >(table->tableSize ())) {
1959- if constexpr (soa::is_soa_filtered_v <T>) {
1966+ if constexpr (soa::ng_filtered_table <T>) {
19601967 Filtered<typename T::base_t > fresult{{{slice}}, SelectionVector{}, 0 };
19611968 table->copyIndexBindings (fresult);
19621969 return fresult;
@@ -1976,7 +1983,7 @@ auto prepareFilteredSlice(T const* table, std::shared_ptr<arrow::Table> slice, u
19761983 [&start](int64_t idx) {
19771984 return idx - static_cast <int64_t >(start);
19781985 });
1979- if constexpr (soa::is_soa_filtered_v <T>) {
1986+ if constexpr (soa::ng_filtered_table <T>) {
19801987 Filtered<typename T::base_t > fresult{{{slice}}, std::move (slicedSelection), start};
19811988 table->copyIndexBindings (fresult);
19821989 return fresult;
@@ -2027,7 +2034,7 @@ template <typename T>
20272034auto doSliceByCachedUnsorted (T const * table, framework::expressions::BindingNode const & node, int value, o2::framework::SliceCache& cache)
20282035{
20292036 auto localCache = cache.ptr ->getCacheUnsortedFor ({o2::soa::getLabelFromTypeForKey<T>(node.name ), node.name });
2030- if constexpr (soa::is_soa_filtered_v <T>) {
2037+ if constexpr (soa::ng_filtered_table <T>) {
20312038 auto t = typename T::self_t ({table->asArrowTable ()}, localCache.getSliceFor (value));
20322039 t.intersectWithSelection (table->getSelectedRows ());
20332040 table->copyIndexBindings (t);
@@ -3392,7 +3399,7 @@ consteval auto getIndexTargets()
33923399 template <typename T> \
33933400 std::vector<typename T::iterator> getFilteredIterators () const \
33943401 { \
3395- if constexpr (o2::soa::is_soa_filtered_v <T>) { \
3402+ if constexpr (o2::soa::ng_filtered_table <T>) { \
33963403 auto result = std::vector<typename T::iterator>(); \
33973404 for (auto const & i : *mColumnIterator ) { \
33983405 auto pos = mBinding .get <T>()->isInSelectedRows (i); \
@@ -4163,6 +4170,9 @@ constexpr auto join(Ts const&... t)
41634170 return Join<Ts...>(ArrowHelpers::joinTables ({t.asArrowTable ()...}));
41644171}
41654172
4173+ template <typename T>
4174+ constexpr bool is_soa_join_v = framework::is_specialization_v<T, JoinFull>;
4175+
41664176template <typename ... Ts>
41674177struct Concat : TableNG<o2::aod::Hash<" CONC" _h>, o2::aod::Hash<" CONC/0" _h>, o2::aod::Hash<" CONC" _h>, Ts...> {
41684178 using base = TableNG<o2::aod::Hash<" CONC" _h>, o2::aod::Hash<" CONC/0" _h>, o2::aod::Hash<" CONC" _h>, Ts...>;
0 commit comments