Skip to content

Commit 5f7c492

Browse files
committed
do not use all_columns pack where the template arguments are available
1 parent 4e3732b commit 5f7c492

File tree

1 file changed

+11
-33
lines changed
  • Framework/Core/include/Framework

1 file changed

+11
-33
lines changed

Framework/Core/include/Framework/ASoA.h

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,15 +1061,15 @@ struct TableIterator : IP, C... {
10611061

10621062
TableIterator(arrow::ChunkedArray* columnData[sizeof...(C)], IP&& policy)
10631063
: IP{policy},
1064-
C(columnData[framework::has_type_at_v<C>(all_columns{})])...
1064+
C(columnData[framework::has_type_at_v<C>(framework::pack<C...>{})])...
10651065
{
10661066
bind();
10671067
}
10681068

10691069
TableIterator(arrow::ChunkedArray* columnData[sizeof...(C)], IP&& policy)
10701070
requires(has_index<C...>)
10711071
: IP{policy},
1072-
C(columnData[framework::has_type_at_v<C>(all_columns{})])...
1072+
C(columnData[framework::has_type_at_v<C>(framework::pack<C...>{})])...
10731073
{
10741074
bind();
10751075
// In case we have an index column might need to constrain the actual
@@ -1147,60 +1147,38 @@ struct TableIterator : IP, C... {
11471147
return *this;
11481148
}
11491149

1150-
template <typename... CL, typename TA>
1151-
void doSetCurrentIndex(framework::pack<CL...>, TA* current)
1152-
{
1153-
(doSetCurrentIndexImpl<CL>(current), ...);
1154-
}
1155-
11561150
template <typename CL>
11571151
auto getCurrent() const
11581152
{
11591153
return CL::getCurrentRaw();
11601154
}
11611155

1162-
template <typename... Cs>
1163-
auto getIndexBindingsImpl(framework::pack<Cs...>) const
1156+
auto getIndexBindings() const
11641157
{
11651158
std::vector<o2::soa::Binding> result;
1166-
(doGetIndexBindingImpl<Cs>(result), ...);
1159+
(doGetIndexBindingImpl<C>(result), ...);
11671160
return result;
11681161
}
11691162

1170-
auto getIndexBindings() const
1171-
{
1172-
return getIndexBindingsImpl(all_columns{});
1173-
}
1174-
11751163
template <typename... TA>
11761164
void bindExternalIndices(TA*... current)
11771165
{
1178-
(doSetCurrentIndex(all_columns{}, current), ...);
1179-
}
1180-
1181-
template <typename... Cs>
1182-
void doSetCurrentIndexRaw(framework::pack<Cs...> p, std::vector<o2::soa::Binding>&& bindings)
1183-
{
1184-
(doSetCurrentIndexRawImpl<Cs>(bindings[framework::has_type_at_v<Cs>(p)]), ...);
1185-
}
1186-
1187-
template <typename... Cs, typename I>
1188-
void doSetCurrentInternal(framework::pack<Cs...>, I const* ptr)
1189-
{
1190-
o2::soa::Binding b;
1191-
b.bind(ptr);
1192-
(doSetCurrentInternalImpl<Cs>(b), ...);
1166+
([this]<typename... Cs, typename TT>(framework::pack<Cs...>, TT* t){
1167+
(doSetCurrentIndexImpl<Cs>(t), ...);
1168+
}(framework::pack<C...>{}, current), ...);
11931169
}
11941170

11951171
void bindExternalIndicesRaw(std::vector<o2::soa::Binding>&& bindings)
11961172
{
1197-
doSetCurrentIndexRaw(all_columns{}, std::forward<std::vector<o2::soa::Binding>>(bindings));
1173+
(doSetCurrentIndexRawImpl<C>(bindings[framework::has_type_at_v<C>(framework::pack<C...>{})]), ...);
11981174
}
11991175

12001176
template <typename I>
12011177
void bindInternalIndices(I const* table)
12021178
{
1203-
doSetCurrentInternal(all_columns{}, table);
1179+
o2::soa::Binding b;
1180+
b.bind(table);
1181+
(doSetCurrentInternalImpl<C>(b), ...);
12041182
}
12051183

12061184
private:

0 commit comments

Comments
 (0)