xref: /aosp_15_r20/external/icing/icing/feature-flags.h (revision 8b6cd535a057e39b3b86660c4aa06c99747c2136)
1 // Copyright (C) 2024 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef ICING_FEATURE_FLAGS_H_
16 #define ICING_FEATURE_FLAGS_H_
17 
18 namespace icing {
19 namespace lib {
20 
21 class FeatureFlags {
22  public:
FeatureFlags(bool enable_scorable_properties,bool enable_embedding_quantization,bool enable_repeated_field_joins)23   explicit FeatureFlags(bool enable_scorable_properties,
24                         bool enable_embedding_quantization,
25                         bool enable_repeated_field_joins)
26       : enable_scorable_properties_(enable_scorable_properties),
27         enable_embedding_quantization_(enable_embedding_quantization),
28         enable_repeated_field_joins_(enable_repeated_field_joins) {}
29 
enable_scorable_properties()30   bool enable_scorable_properties() const {
31     return enable_scorable_properties_;
32   }
33 
enable_embedding_quantization()34   bool enable_embedding_quantization() const {
35     return enable_embedding_quantization_;
36   }
37 
enable_repeated_field_joins()38   bool enable_repeated_field_joins() const {
39     return enable_repeated_field_joins_;
40   }
41 
42  private:
43   bool enable_scorable_properties_;
44 
45   // Whether to enable quantization for embedding vectors. If false, all
46   // embedding vectors will not be quantized. Otherwise, quantization will be
47   // controlled by the quantization type specified in the schema.
48   bool enable_embedding_quantization_;
49 
50   bool enable_repeated_field_joins_;
51 };
52 
53 }  // namespace lib
54 }  // namespace icing
55 
56 #endif  // ICING_FEATURE_FLAGS_H_
57