68 :
public FilterBase<OccupancyState<State, Negated>> {
72 static constexpr void init(
Pred&,
Tree const&)
76 template <
class Tree,
class Node>
77 [[nodiscard]]
static constexpr bool returnable(
Pred const& p,
Tree const& t,
80 bool v = [&]() ->
bool {
81 if constexpr (ufo::OccupancyState::UNKNOWN == State) {
82 return t.occupancyUnknown(n.index);
83 }
else if constexpr (ufo::OccupancyState::FREE == State) {
84 return t.occupancyFree(n.index);
85 }
else if constexpr (ufo::OccupancyState::OCCUPIED == State) {
86 return t.occupancyOccupied(n.index);
90 if constexpr (Negated) {
97 template <
class Tree,
class Node>
98 [[nodiscard]]
static constexpr bool traversable(
Pred const& p,
Tree const& t,
101 if constexpr (Negated) {
102 if constexpr (ufo::OccupancyState::UNKNOWN == State) {
103 return t.occupancyContainsFree(n.index) || t.occupancyContainsOccupied(n.index);
104 }
else if constexpr (ufo::OccupancyState::FREE == State) {
105 return t.occupancyContainsUnknown(n.index) ||
106 t.occupancyContainsOccupied(n.index);
107 }
else if constexpr (ufo::OccupancyState::OCCUPIED == State) {
108 return t.occupancyContainsUnknown(n.index) || t.occupancyContainsFree(n.index);
111 if constexpr (ufo::OccupancyState::UNKNOWN == State) {
112 return t.occupancyContainsUnknown(n.index);
113 }
else if constexpr (ufo::OccupancyState::FREE == State) {
114 return t.occupancyContainsFree(n.index);
115 }
else if constexpr (ufo::OccupancyState::OCCUPIED == State) {
116 return t.occupancyContainsOccupied(n.index);