GrPPI  1.0
Generic and Reusable Parallel Pattern Interface
stream_filter.h
Go to the documentation of this file.
1 /*
2  * Copyright 2018 Universidad Carlos III de Madrid
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef GRPPI_STREAM_FILTER_H
17 #define GRPPI_STREAM_FILTER_H
18 
19 #include "common/patterns.h"
20 
21 namespace grppi {
22 
41 template <typename Predicate>
42 auto keep(Predicate && predicate_op)
43 {
44  return filter_t<Predicate>{std::forward<Predicate>(predicate_op)};
45 }
46 
57 template <typename Predicate>
58 auto discard(Predicate && predicate_op)
59 {
60  return keep([&](auto val) { return !predicate_op(val); });
61 }
62 
68 }
69 
70 #endif
Representation of filter pattern. Represents a filter that can be used as a stage on a pipeline.
Definition: filter_pattern.h:29
auto discard(Predicate &&predicate_op)
Invoke md_stream-filter on a data stream that can be composed in other streaming patterns....
Definition: stream_filter.h:58
auto keep(Predicate &&predicate_op)
Invoke md_stream-filter on a data stream that can be composed in other streaming patterns....
Definition: stream_filter.h:42
Definition: callable_traits.h:21