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