Public Member Functions | Static Public Member Functions | Private Types | List of all members
proxy::details::assns_node_iterator< ArtAssnsIter > Class Template Reference

#include <AssociatedData.h>

Inheritance diagram for proxy::details::assns_node_iterator< ArtAssnsIter >:
proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >

Public Member Functions

 assns_node_iterator (base_iterator_t const &from)
 Constructor from a base iterator (explicitly allowed). More...
 
AssnsNode_t const & info () const
 Returns the full information the iterator points to. More...
 
AssnsNode_t const & operator() () const
 Returns the full information the iterator points to. More...
 
- Public Member Functions inherited from proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >
 IteratorWrapperBase ()=default
 Default constructor: default-constructs the underlying iterator. More...
 
 IteratorWrapperBase (data_iterator_t const &from)
 Copy-from-base constructor. More...
 
iteratoroperator++ ()
 Prefix increment operator. More...
 
bool operator!= (data_iterator_t const &other) const
 Comparison with a data iterator (makes unnecessary to wrap end iterators). More...
 
bool operator!= (iterator const &other) const
 Comparison with another iterator. More...
 
auto operator[] (std::size_t index) const -> decltype(auto)
 
auto operator* () const -> decltype(auto)
 Dereference operator; need to be redefined by derived classes. More...
 
auto operator-> () const -> decltype(auto)
 Dereference operator; need to be redefined by derived classes. More...
 

Static Public Member Functions

static AssnsNode_t const & transform (art_assns_iter_t const &v)
 

Private Types

using base_iterator_t = IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, typename AssnsIterTraits< ArtAssnsIter >::node_t >
 
using art_assns_iter_t = ArtAssnsIter
 
using traits_t = AssnsIterTraits< art_assns_iter_t >
 
using AssnsNode_t = typename traits_t::node_t
 Type of node for this association iterator. More...
 
using ArtAssnsNode_t = typename traits_t::art_node_t
 

Access to the full association information

This interface is a replica of the one of AssnsNode_t.

using main_t = typename AssnsNode_t::main_t
 
using value_t = typename AssnsNode_t::value_t
 
using data_t = typename AssnsNode_t::data_t
 
using mainptr_t = typename AssnsNode_t::mainptr_t
 
using valueptr_t = typename AssnsNode_t::valueptr_t
 
using dataptr_t = typename AssnsNode_t::dataptr_t
 
valueptr_t valuePtr () const
 Returns the art pointer to the associated value. More...
 
value_t const & value () const
 Returns the art pointer to the associated value. More...
 
mainptr_t mainPtr () const
 Returns the art pointer to the main value, key of the association. More...
 
main_t const & main () const
 Returns the main value, key of the association. More...
 
template<typename ArtNode = ArtAssnsNode_t>
std::enable_if_t< hasMetadata< ArtNode >), dataptr_tdataPtr () const
 Returns the pointer to the metadata on this association node. More...
 
template<typename ArtNode = ArtAssnsNode_t>
std::enable_if_t< hasMetadata< ArtNode >), typename lar::util::assns_traits< ArtNode >::data_t const & > data () const
 Returns a reference to the metadata on this association node. More...
 
template<typename Node = AssnsNode_t>
static constexpr bool hasMetadata ()
 Returns whether this node type supports metadata. More...
 

Additional Inherited Members

- Public Types inherited from proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >
using iterator = assns_node_iterator< ArtAssnsIter >
 
using value_type = AssnsIterTraits< ArtAssnsIter >::node_t
 
using pointer = std::add_pointer_t< value_type >
 
using reference = std::add_lvalue_reference_t< value_type >
 
using iterator_category = std::forward_iterator_tag
 
- Protected Types inherited from proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >
using data_iterator_t = ArtAssnsIter
 
- Protected Member Functions inherited from proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >
data_iterator_t const & asDataIterator () const
 
- Static Protected Member Functions inherited from proxy::details::IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, AssnsIterTraits< ArtAssnsIter >::node_t >
static auto transform (data_iterator_t const &) -> decltype(auto)
 Transforms and returns the value at the specified data iterator. More...
 

Detailed Description

template<typename ArtAssnsIter>
class proxy::details::assns_node_iterator< ArtAssnsIter >

Modified iterator returning a association node interface. The basic iterator interface is to the associated (right) art pointer.

Definition at line 397 of file AssociatedData.h.

Member Typedef Documentation

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::art_assns_iter_t = ArtAssnsIter
private

Definition at line 410 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::ArtAssnsNode_t = typename traits_t::art_node_t
private

Definition at line 415 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::AssnsNode_t = typename traits_t::node_t
private

Type of node for this association iterator.

Definition at line 414 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::base_iterator_t = IteratorWrapperBase< assns_node_iterator<ArtAssnsIter>, ArtAssnsIter, typename AssnsIterTraits<ArtAssnsIter>::node_t >
private

Definition at line 408 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::data_t = typename AssnsNode_t::data_t

Definition at line 437 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::dataptr_t = typename AssnsNode_t::dataptr_t

Definition at line 440 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::main_t = typename AssnsNode_t::main_t

Definition at line 435 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::mainptr_t = typename AssnsNode_t::mainptr_t

Definition at line 438 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::traits_t = AssnsIterTraits<art_assns_iter_t>
private

Definition at line 411 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::value_t = typename AssnsNode_t::value_t

Definition at line 436 of file AssociatedData.h.

template<typename ArtAssnsIter >
using proxy::details::assns_node_iterator< ArtAssnsIter >::valueptr_t = typename AssnsNode_t::valueptr_t

Definition at line 439 of file AssociatedData.h.

Constructor & Destructor Documentation

template<typename ArtAssnsIter >
proxy::details::assns_node_iterator< ArtAssnsIter >::assns_node_iterator ( base_iterator_t const &  from)
inline

Constructor from a base iterator (explicitly allowed).

Definition at line 421 of file AssociatedData.h.

422  : base_iterator_t(from) {}
IteratorWrapperBase< assns_node_iterator< ArtAssnsIter >, ArtAssnsIter, typename AssnsIterTraits< ArtAssnsIter >::node_t > base_iterator_t

Member Function Documentation

template<typename ArtAssnsIter >
template<typename ArtNode = ArtAssnsNode_t>
std::enable_if_t< hasMetadata<ArtNode>), typename lar::util::assns_traits<ArtNode>::data_t const& > proxy::details::assns_node_iterator< ArtAssnsIter >::data ( ) const
inline

Returns a reference to the metadata on this association node.

Definition at line 471 of file AssociatedData.h.

472  { return info().data(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
template<typename ArtNode = ArtAssnsNode_t>
std::enable_if_t<hasMetadata<ArtNode>), dataptr_t> proxy::details::assns_node_iterator< ArtAssnsIter >::dataPtr ( ) const
inline

Returns the pointer to the metadata on this association node.

Definition at line 462 of file AssociatedData.h.

463  { return info().dataPtr(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
template<typename Node = AssnsNode_t>
static constexpr bool proxy::details::assns_node_iterator< ArtAssnsIter >::hasMetadata ( )
inlinestatic

Returns whether this node type supports metadata.

Definition at line 457 of file AssociatedData.h.

458  { return lar::util::assns_has_metadata_v<Node>; }
template<typename ArtAssnsIter >
AssnsNode_t const& proxy::details::assns_node_iterator< ArtAssnsIter >::info ( ) const
inline

Returns the full information the iterator points to.

Definition at line 425 of file AssociatedData.h.

425 { return base_iterator_t::operator*(); }
auto operator*() const -> decltype(auto)
Dereference operator; need to be redefined by derived classes.
template<typename ArtAssnsIter >
main_t const& proxy::details::assns_node_iterator< ArtAssnsIter >::main ( ) const
inline

Returns the main value, key of the association.

Definition at line 452 of file AssociatedData.h.

452 { return info().main(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
mainptr_t proxy::details::assns_node_iterator< ArtAssnsIter >::mainPtr ( ) const
inline

Returns the art pointer to the main value, key of the association.

Definition at line 449 of file AssociatedData.h.

449 { return info().mainPtr(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
AssnsNode_t const& proxy::details::assns_node_iterator< ArtAssnsIter >::operator() ( void  ) const
inline

Returns the full information the iterator points to.

Definition at line 428 of file AssociatedData.h.

428 { return info(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
static AssnsNode_t const& proxy::details::assns_node_iterator< ArtAssnsIter >::transform ( art_assns_iter_t const &  v)
inlinestatic

Definition at line 494 of file AssociatedData.h.

495  { return makeAssnsNode(*v); }
AssnsNode< ArtAssnsIterValue > const & makeAssnsNode(ArtAssnsIterValue const &from)
Reinterprets the specified association node as a AssnsNode.
template<typename ArtAssnsIter >
value_t const& proxy::details::assns_node_iterator< ArtAssnsIter >::value ( ) const
inline

Returns the art pointer to the associated value.

Definition at line 446 of file AssociatedData.h.

446 { return info().value(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.
template<typename ArtAssnsIter >
valueptr_t proxy::details::assns_node_iterator< ArtAssnsIter >::valuePtr ( ) const
inline

Returns the art pointer to the associated value.

Definition at line 443 of file AssociatedData.h.

443 { return info().valuePtr(); }
AssnsNode_t const & info() const
Returns the full information the iterator points to.

The documentation for this class was generated from the following file: