blob: cb36560ca0849fcb469e9ff9efa6edfaa9c8c6db [file] [log] [blame]
sdefresne246c5642015-11-16 21:47:291// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_FLAGS_UI_FEATURE_ENTRY_MACROS_H_
6#define COMPONENTS_FLAGS_UI_FEATURE_ENTRY_MACROS_H_
7
8// Macros to simplify specifying the type of FeatureEntry. Please refer to
9// the comments on FeatureEntry::Type in feature_entry.h, which explain the
10// different entry types and when they should be used.
11#define SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, switch_value) \
12 flags_ui::FeatureEntry::SINGLE_VALUE, command_line_switch, switch_value, \
13 nullptr, nullptr, nullptr, nullptr, 0
14#define SINGLE_VALUE_TYPE(command_line_switch) \
15 SINGLE_VALUE_TYPE_AND_VALUE(command_line_switch, "")
16#define SINGLE_DISABLE_VALUE_TYPE_AND_VALUE(command_line_switch, switch_value) \
17 flags_ui::FeatureEntry::SINGLE_DISABLE_VALUE, command_line_switch, \
18 switch_value, nullptr, nullptr, nullptr, nullptr, 0
19#define SINGLE_DISABLE_VALUE_TYPE(command_line_switch) \
20 SINGLE_DISABLE_VALUE_TYPE_AND_VALUE(command_line_switch, "")
21#define ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, enable_value, \
22 disable_switch, disable_value) \
23 flags_ui::FeatureEntry::ENABLE_DISABLE_VALUE, enable_switch, enable_value, \
24 disable_switch, disable_value, nullptr, nullptr, 3
25#define ENABLE_DISABLE_VALUE_TYPE(enable_switch, disable_switch) \
26 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(enable_switch, "", disable_switch, "")
27#define MULTI_VALUE_TYPE(choices) \
28 flags_ui::FeatureEntry::MULTI_VALUE, nullptr, nullptr, nullptr, nullptr, \
29 nullptr, choices, arraysize(choices)
30#define FEATURE_VALUE_TYPE(feature) \
31 flags_ui::FeatureEntry::FEATURE_VALUE, nullptr, nullptr, nullptr, nullptr, \
32 &feature, nullptr, 3
33
34#endif // COMPONENTS_FLAGS_UI_FEATURE_ENTRY_MACROS_H_