lsst.afw  21.0.0-27-g37a8c363b+c8448cd80e
Public Member Functions | List of all members
lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F > Struct Template Reference

A functor-wrapper used in the implementation of Schema::forEach. More...

#include <SchemaImpl.h>

Inheritance diagram for lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F >:

Public Member Functions

template<typename T >
void operator() (SchemaItem< T > const &x) const
 Call the wrapped function. More...
 
void operator() (ItemVariant const &v) const
 Invoke the visitation. More...
 
template<typename T >
 VisitorWrapper (T &&func)
 Construct the wrapper. More...
 

Detailed Description

template<typename F>
struct lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F >

A functor-wrapper used in the implementation of Schema::forEach.

Visitor functors used with Boost.Variant (see the Boost.Variant docs) must inherit from boost::static_visitor<> to declare their return type (void, in this case). By wrapping user-supplied functors with this class, we can hide the fact that we've implemented SchemaImpl using Boost.Variant (because they won't need to inherit from static_visitor themselves.

Definition at line 158 of file SchemaImpl.h.

Constructor & Destructor Documentation

◆ VisitorWrapper()

template<typename F >
template<typename T >
lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F >::VisitorWrapper ( T &&  func)
inlineexplicit

Construct the wrapper.

Definition at line 178 of file SchemaImpl.h.

Member Function Documentation

◆ operator()() [1/2]

template<typename F >
void lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F >::operator() ( ItemVariant const &  v) const
inline

Invoke the visitation.

The call to boost::apply_visitor will call the appropriate template of operator().

This overload allows a VisitorWrapper to be applied directly on a variant object with function-call syntax, allowing us to use it on our vector of variants with std::for_each and other STL algorithms.

Definition at line 174 of file SchemaImpl.h.

◆ operator()() [2/2]

template<typename F >
template<typename T >
void lsst::afw::table::detail::SchemaImpl::VisitorWrapper< F >::operator() ( SchemaItem< T > const &  x) const
inline

Call the wrapped function.

Definition at line 161 of file SchemaImpl.h.


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