LSSTApplications  18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
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.

178 : _func(std::forward<T>(func)) {}

Member Function Documentation

◆ operator()() [1/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.

161  {
162  _func(x);
163  };
double x

◆ operator()() [2/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.

174 { boost::apply_visitor(*this, v); }

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