Skip to content

Commit 595f113

Browse files
committed
Attempt at reducing makeEmptyTable bloat
1 parent a6af317 commit 595f113

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

Framework/Core/include/Framework/TableBuilder.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -753,11 +753,14 @@ auto makeEmptyTable()
753753
return b.finalize();
754754
}
755755

756-
template <typename... Cs>
757-
auto makeEmptyTable(const char* name, framework::pack<Cs...> p)
756+
template <typename P>
757+
concept PackLike = requires (P &p) { o2::framework::pack_size(p); };
758+
759+
template <PackLike P>
760+
auto makeEmptyTable(const char* name)
758761
{
759762
TableBuilder b;
760-
[[maybe_unused]] auto writer = b.cursor(p);
763+
[[maybe_unused]] auto writer = b.cursor(P{});
761764
b.setLabel(name);
762765
return b.finalize();
763766
}
@@ -773,7 +776,7 @@ auto spawner(std::vector<std::shared_ptr<arrow::Table>>&& tables, const char* na
773776
using placeholders_pack_t = typename o2::aod::MetadataTrait<D>::metadata::placeholders_pack_t;
774777
auto fullTable = soa::ArrowHelpers::joinTables(std::move(tables));
775778
if (fullTable->num_rows() == 0) {
776-
return makeEmptyTable(name, placeholders_pack_t{});
779+
return makeEmptyTable<placeholders_pack_t>(name);
777780
}
778781
static auto new_schema = std::make_shared<arrow::Schema>(o2::soa::createFieldsFromColumns(placeholders_pack_t{}));
779782

@@ -786,7 +789,7 @@ auto spawner(std::shared_ptr<arrow::Table> const& fullTable, const char* name, o
786789
{
787790
using placeholders_pack_t = typename o2::aod::MetadataTrait<D>::metadata::placeholders_pack_t;
788791
if (fullTable->num_rows() == 0) {
789-
return makeEmptyTable(name, placeholders_pack_t{});
792+
return makeEmptyTable<placeholders_pack_t>(name);
790793
}
791794
static auto new_schema = std::make_shared<arrow::Schema>(o2::soa::createFieldsFromColumns(placeholders_pack_t{}));
792795

@@ -800,7 +803,7 @@ auto spawner(std::vector<std::shared_ptr<arrow::Table>>&& tables, const char* na
800803
using expression_pack_t = typename o2::aod::MetadataTrait<D>::metadata::expression_pack_t;
801804
auto fullTable = soa::ArrowHelpers::joinTables(std::move(tables));
802805
if (fullTable->num_rows() == 0) {
803-
return makeEmptyTable(name, expression_pack_t{});
806+
return makeEmptyTable<expression_pack_t>(name);
804807
}
805808
static auto new_schema = std::make_shared<arrow::Schema>(o2::soa::createFieldsFromColumns(expression_pack_t{}));
806809

@@ -819,7 +822,7 @@ auto spawner(std::shared_ptr<arrow::Table> const& fullTable, const char* name, s
819822
{
820823
using expression_pack_t = typename o2::aod::MetadataTrait<D>::metadata::expression_pack_t;
821824
if (fullTable->num_rows() == 0) {
822-
return makeEmptyTable(name, expression_pack_t{});
825+
return makeEmptyTable<expression_pack_t>(name);
823826
}
824827
static auto new_schema = std::make_shared<arrow::Schema>(o2::soa::createFieldsFromColumns(expression_pack_t{}));
825828
auto projectors = []<typename... C>(framework::pack<C...>) -> std::array<expressions::Projector, sizeof...(C)>
@@ -836,7 +839,7 @@ auto spawner(framework::pack<C...> columns, std::vector<std::shared_ptr<arrow::T
836839
{
837840
auto fullTable = soa::ArrowHelpers::joinTables(std::move(tables));
838841
if (fullTable->num_rows() == 0) {
839-
return makeEmptyTable(name, framework::pack<C...>{});
842+
return makeEmptyTable<decltype(columns)>(name);
840843
}
841844
static auto new_schema = std::make_shared<arrow::Schema>(o2::soa::createFieldsFromColumns(columns));
842845
std::array<expressions::Projector, sizeof...(C)> projectors{{std::move(C::Projector())...}};

0 commit comments

Comments
 (0)