This goes with LHCb!2173 (merged), Brunel!901 (merged) and Moore!260 (merged).
"pure" functor changes:
FILTER
functor that adapts something that acts object-wise into something that acts container-wise. This removes some very awkward overload resolution ambiguities and allows several other improvements. In practice the outer FILTER(...)
can be added automatically.
Functor<>
and Predicate<>
, just use FunctorBase
and PredicateBase
, which are now named Functor
and Predicate
rtype()
to the type-erasing wrapper -- this returns the std::type_info
of the wrapped functor return type before it's converted to the specified output type. This is useful for the dump-to-TTree functionality (where the specified output type can be std::any
)prepare()
, add a test for thatALL
and NONE
to return appropriate mask_v
types from vector argumentsfunctor "usage" changes:
ThOR::FunctorDesc::ALL
default for use as a default property valueFunctors::IFactory
interface, improve error-reportingwith_functors
mixin for algorithms that want a fixed number of functorswith_functor_maps
mixin for algorithms that want a fixed number of maps-of-functorsfunctor testing changes:
test_functors.py
functor-using algorithm changes:
CombineTracks
to reduce copy/pasted boilerplate
VoidFilter
to reduce copy/pasted boilerplatePr::Filter
to reduce copy/pasted boilerplate
Pr::SOAFilter
is partially migrated but not fully -- not sure if this is a priority..other changes:
IterableVertexRelations.h
Pr::Selection<T>
headerPr::Zip<...>
header