Blender
V5.0
source
blender
blenkernel
BKE_attribute_filters.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#pragma once
10
11
#include "
BKE_attribute_filter.hh
"
12
13
#include "
BLI_set.hh
"
14
15
namespace
blender::bke
{
16
20
template
<
typename
Fn>
struct
AttributeFilterFromFunc
:
public
AttributeFilter
{
21
private
:
22
Fn fn_;
23
24
static_assert
(std::is_invocable_r_v<Result, Fn, StringRef>);
25
26
public
:
27
constexpr
AttributeFilterFromFunc
(Fn
fn
) : fn_(std::move(
fn
)) {}
28
29
Result
filter
(
const
StringRef
name
)
const override
30
{
31
return
fn_(
name
);
32
}
33
};
34
39
inline
auto
attribute_filter_with_skip_ref
(
AttributeFilter
filter
,
const
Span<StringRef>
skip)
40
{
41
return
AttributeFilterFromFunc
([
filter
, skip](
const
StringRef
name
) {
42
if
(skip.
contains
(
name
)) {
43
return
AttributeFilter::Result::AllowSkip
;
44
}
45
return
filter
.filter(
name
);
46
});
47
}
48
50
template
<
typename
StringT>
51
inline
auto
attribute_filter_with_skip_ref
(
AttributeFilter
filter
,
const
Set<StringT>
&skip)
52
{
53
return
AttributeFilterFromFunc
([
filter
, &skip](
const
StringRef
name
) {
54
if
(skip.
contains_as
(
name
)) {
55
return
AttributeFilter::Result::AllowSkip
;
56
}
57
return
filter
.filter(
name
);
58
});
59
}
60
65
inline
auto
attribute_filter_from_skip_ref
(
const
Span<StringRef>
skip)
66
{
67
return
AttributeFilterFromFunc
([skip](
const
StringRef
name
) {
68
if
(skip.
contains
(
name
)) {
69
return
AttributeFilter::Result::AllowSkip
;
70
}
71
return
AttributeFilter::Result::Process
;
72
});
73
}
74
76
template
<
typename
StringT>
inline
auto
attribute_filter_from_skip_ref
(
const
Set<StringT>
&skip)
77
{
78
return
AttributeFilterFromFunc
([&skip](
const
StringRef
name
) {
79
if
(skip.
contains_as
(
name
)) {
80
return
AttributeFilter::Result::AllowSkip
;
81
}
82
return
AttributeFilter::Result::Process
;
83
});
84
}
85
86
}
// namespace blender::bke
BKE_attribute_filter.hh
BLI_set.hh
blender::Set
Definition
BLI_set.hh:106
blender::Set::contains_as
bool contains_as(const ForwardKey &key) const
Definition
BLI_set.hh:314
blender::Span
Definition
BLI_span.hh:74
blender::Span::contains
constexpr bool contains(const T &value) const
Definition
BLI_span.hh:277
blender::StringRef
Definition
BLI_string_ref.hh:150
filter
#define filter
Definition
gpu_shader_compat_cxx.hh:179
blender::bke
Definition
AS_asset_library.hh:27
blender::bke::attribute_filter_from_skip_ref
auto attribute_filter_from_skip_ref(const Span< StringRef > skip)
Definition
BKE_attribute_filters.hh:65
blender::bke::attribute_filter_with_skip_ref
auto attribute_filter_with_skip_ref(AttributeFilter filter, const Span< StringRef > skip)
Definition
BKE_attribute_filters.hh:39
blender::fn
Definition
BKE_attribute.hh:27
name
const char * name
Definition
python_compat.hh:32
blender::bke::AttributeFilterFromFunc
Definition
BKE_attribute_filters.hh:20
blender::bke::AttributeFilterFromFunc::AttributeFilterFromFunc
constexpr AttributeFilterFromFunc(Fn fn)
Definition
BKE_attribute_filters.hh:27
blender::bke::AttributeFilterFromFunc::filter
Result filter(const StringRef name) const override
Definition
BKE_attribute_filters.hh:29
blender::bke::AttributeFilter
Definition
BKE_attribute_filter.hh:26
blender::bke::AttributeFilter::Result
Result
Definition
BKE_attribute_filter.hh:28
blender::bke::AttributeFilter::Result::Process
@ Process
Definition
BKE_attribute_filter.hh:32
blender::bke::AttributeFilter::Result::AllowSkip
@ AllowSkip
Definition
BKE_attribute_filter.hh:30
Generated on
for Blender by
doxygen
1.16.1