| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_EXPERIMENTAL_FLAGS_H_ |
| #define ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_EXPERIMENTAL_FLAGS_H_ |
| |
| #include <map> |
| #include <string_view> |
| #include <unordered_set> |
| |
| namespace fidl { |
| |
| class ExperimentalFlags { |
| public: |
| enum class Flag { |
| kEnableHandleRights = 0b01, |
| kFlexibleBitsAndEnums = 0b10, |
| }; |
| |
| ExperimentalFlags() {} |
| ExperimentalFlags(Flag flag) { SetFlag(flag); } |
| |
| bool SetFlagByName(const std::string_view flag); |
| void SetFlag(Flag flag); |
| |
| bool IsFlagEnabled(Flag flag) const; |
| |
| private: |
| static std::map<const std::string_view, const Flag> FLAG_STRINGS; |
| |
| std::unordered_set<Flag> flags; |
| }; |
| |
| } // namespace fidl |
| |
| #endif // ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_EXPERIMENTAL_FLAGS_H_ |