23#ifndef VCL_VIEWS_MESH_COMPONENTS_SELECTION_H
24#define VCL_VIEWS_MESH_COMPONENTS_SELECTION_H
26#include <vclib/concepts/pointers.h>
27#include <vclib/types.h>
35inline constexpr auto isSelected = [](
auto&& e) ->
decltype(
auto) {
44inline constexpr auto isNotSelected = [](
auto&& e) ->
decltype(
auto) {
46 return !e->selected();
55 constexpr SelectionView() =
default;
57 template<std::ranges::range R>
58 friend constexpr auto operator|(R&& r, SelectionView)
60 return std::forward<R>(r) | std::views::transform(isSelected);
66 constexpr SelectedView() =
default;
68 template<std::ranges::range R>
69 friend constexpr auto operator|(R&& r, SelectedView)
71 return std::forward<R>(r) | std::views::filter(isSelected);
77 constexpr NotSelectedView() =
default;
79 template<std::ranges::range R>
80 friend constexpr auto operator|(R&& r, NotSelectedView)
82 return std::forward<R>(r) | std::views::filter(isNotSelected);
88inline constexpr detail::SelectionView selection;
89inline constexpr detail::SelectedView selected;
90inline constexpr detail::NotSelectedView notSelected;
The IsPointer concept is satisfied if T is a Pointer, even if the type T is a reference to a pointer.
Definition pointers.h:53