10 #ifndef vtk_m_exec_CellLocatorMultiplexer_h 
   11 #define vtk_m_exec_CellLocatorMultiplexer_h 
   26 struct FindCellFunctor
 
   28   template <
typename Locator>
 
   34     return locator.FindCell(point, cellId, parametric);
 
   37   template <
typename Locator, 
typename LastCell>
 
   42                                        LastCell& lastCell)
 const 
   44     using ConcreteLastCell = 
typename std::decay_t<Locator>::LastCell;
 
   45     if (!lastCell.template IsType<ConcreteLastCell>())
 
   47       lastCell = ConcreteLastCell{};
 
   49     return locator.FindCell(point, cellId, parametric, lastCell.template Get<ConcreteLastCell>());
 
   55 template <
typename... LocatorTypes>
 
   63   using LastCell = vtkm::exec::Variant<
typename LocatorTypes::LastCell...>;
 
   65   template <
typename Locator>
 
   75     return this->Locators.CastAndCall(detail::FindCellFunctor{}, point, cellId, parametric);
 
   83     return this->Locators.CastAndCall(
 
   84       detail::FindCellFunctor{}, point, cellId, parametric, lastCell);
 
   91 #endif //vtk_m_exec_CellLocatorMultiplexer_h