xref: /aosp_15_r20/external/stg/filter.h (revision 9e3b08ae94a55201065475453d799e8b1378bea6)
1 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2 // -*- mode: C++ -*-
3 //
4 // Copyright 2022-2023 Google LLC
5 //
6 // Licensed under the Apache License v2.0 with LLVM Exceptions (the
7 // "License"); you may not use this file except in compliance with the
8 // License.  You may obtain a copy of the License at
9 //
10 //     https://llvm.org/LICENSE.txt
11 //
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17 //
18 // Author: Giuliano Procida
19 
20 #ifndef STG_FILTER_H_
21 #define STG_FILTER_H_
22 
23 #include <memory>
24 #include <ostream>
25 #include <string>
26 
27 namespace stg {
28 
29 // Abstract base class for filtering.
30 class Filter {
31  public:
32   virtual ~Filter() = default;
33   // Filter predicate evaluation.
34   virtual bool operator()(const std::string& item) const = 0;
35 };
36 
37 // Tokenise and parse a filter expression.
38 std::unique_ptr<Filter> MakeFilter(const std::string& filter);
39 
40 void FilterUsage(std::ostream& os);
41 
42 }  // namespace stg
43 
44 #endif  // STG_FILTER_H_
45