SOA Container extensions
Extensions to SOAContainer to provide
- a bit more runtime checks to zipping
- the functionality of Selections (in the sense of the current Pr::Selection)
wrt Friday's discussion I kept the global state as FamilyNumber provider bc
auto operator() (…) {
ZipContainer<…> component1;
ZipContainer<…> component2(component1.zipIdentifier());
///
component1.push_back( … ); // might relocate container content -> memory addresses of contained data might be reused
///
return std::make_tuple(std::move(component1), std::move(component2)); // location of container itself changes -> memory addresses of container might be reused
}
A type trait from SOAContainer to distinguish owning from non-owning types that fulfill SOA::is_view
are in the workings.
As noted in the fixmes, I noticed that the SelectionView isn't fully STL algorithm compliant (iterator traits are intentionally not provided).
See the SOAExtensions/examples for the intended usage.
At this stage deliberately no LHCb example.
Edited by Marco Cattaneo