Skip to content

SOA Container extensions

Paul Seyfert requested to merge pseyfert/LHCb:soaextensions_ into master

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

Merge request reports