| // 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. |
| |
| #include "fidl/experimental_flags.h" |
| |
| namespace fidl { |
| |
| bool ExperimentalFlags::SetFlagByName(const std::string_view flag) { |
| auto it = FLAG_STRINGS.find(flag); |
| if (it == FLAG_STRINGS.end()) { |
| return false; |
| } |
| SetFlag(it->second); |
| return true; |
| } |
| |
| void ExperimentalFlags::SetFlag(Flag flag) { flags_ |= static_cast<FlagSet>(flag); } |
| |
| bool ExperimentalFlags::IsFlagEnabled(Flag flag) const { |
| return (flags_ & static_cast<FlagSet>(flag)) != 0; |
| } |
| |
| std::map<const std::string_view, const ExperimentalFlags::Flag> ExperimentalFlags::FLAG_STRINGS = { |
| {"enable_handle_rights", Flag::kEnableHandleRights}, |
| {"disallow_old_using_syntax", Flag::kDisallowOldUsingSyntax}, |
| {"allow_new_syntax", Flag::kAllowNewSyntax}, |
| }; |
| |
| } // namespace fidl |