11 #ifndef LARDATA_RECOBASEPROXY_PROXYBASE_PARALLELDATA_H
12 #define LARDATA_RECOBASEPROXY_PROXYBASE_PARALLELDATA_H
20 #include <type_traits>
101 = decltype(util::makeTagged<tag>(std::declval<aux_element_t>()));
110 {
return fData->begin(); }
114 {
return fData->end(); }
121 "Inconsistent data types."
127 template <
typename TestTag>
128 static constexpr
bool hasTag() {
return std::is_same<TestTag, tag>(); }
141 {
return util::makeTagged<tag>(
fData->operator[](index)); }
183 #endif // LARDATA_RECOBASEPROXY_PROXYBASE_PARALLELDATA_H
Object to draft parallel data interface.
parallel_data_t const * data() const
Returns a pointer to the whole data collection.
parallel_data_t const * fData
Reference to the original data product.
util::collection_value_constant_access_t< AuxProxyColl > aux_element_t
Type returned when accessing an auxiliary collection element.
auto end() const -> decltype(auto)
Returns an iterator pointing past the last data element.
static constexpr bool hasTag()
Returns whether this data is labeled with the specified tag.
auto begin() const -> decltype(auto)
Returns an iterator pointing to the first data element.
AuxProxyColl parallel_data_t
Type of auxiliary collection.
auto operator[](std::size_t index) const -> decltype(auto)
Returns the element with the specified index (no check performed).
auto makeParallelData(AuxColl const &data)
Wraps a collection into a parallel data collection object.
parallel_data_t const & dataRef() const
Returns a reference to the whole data collection.
Aux aux_t
Type of the value of auxiliary collection element.
ParallelData(parallel_data_t const &data)
Constructor: points to the specified data collection.
Utilities to address elements of a tuple-like class by tag.
decltype(util::makeTagged< tag >(std::declval< aux_element_t >())) auxiliary_data_t
Type returned when accessing auxiliary data.
Tag tag
Tag of this association proxy.
typename parallel_data_t::const_iterator parallel_data_iterator_t
auto getElement(std::size_t index) const -> decltype(auto)