| // Copyright 2017 The Chromium 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 "components/arc/arc_instance_mode.h" |
| |
| #include <string> |
| |
| #include "base/logging.h" |
| |
| namespace arc { |
| namespace { |
| |
| std::string ArcInstanceModeToString(ArcInstanceMode mode) { |
| #define MAP_MODE(name) \ |
| case ArcInstanceMode::name: \ |
| return #name |
| |
| switch (mode) { |
| MAP_MODE(MINI_INSTANCE); |
| MAP_MODE(FULL_INSTANCE); |
| } |
| #undef MAP_MODE |
| |
| // Some compilers report an error even if all values of an enum-class are |
| // covered exhaustively in a switch statement. |
| NOTREACHED() << "Invalid value " << static_cast<int>(mode); |
| return std::string(); |
| } |
| |
| } // namespace |
| |
| std::ostream& operator<<(std::ostream& os, ArcInstanceMode mode) { |
| return os << ArcInstanceModeToString(mode); |
| } |
| |
| std::ostream& operator<<(std::ostream& os, |
| base::Optional<ArcInstanceMode> mode) { |
| return os << (mode.has_value() ? ArcInstanceModeToString(mode.value()) |
| : "(nullopt)"); |
| } |
| |
| } // namespace arc |