| // Copyright 2016 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 <lib/context/cpp/formatting.h> |
| |
| #include <fuchsia/modular/cpp/fidl.h> |
| #include <lib/fidl/cpp/vector.h> |
| |
| namespace fuchsia { |
| namespace modular { |
| |
| template <typename T> |
| std::ostream& operator<<(std::ostream& os, const fidl::VectorPtr<T>& value) { |
| os << "[ "; |
| for (const T& element : *value) { |
| os << element << " "; |
| } |
| return os << "]"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const FocusedState& state) { |
| return os << (state.state == FocusedStateState::FOCUSED ? "yes" : "no"); |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const StoryMetadata& meta) { |
| return os << "{ id: " << meta.id << ", focused: " << *meta.focused << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ModuleMetadata& meta) { |
| return os << "{ url: " << meta.url << ", path: " << meta.path << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const EntityMetadata& meta) { |
| return os << "{ topic: " << meta.topic << ", type: " << meta.type << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const LinkMetadata& meta) { |
| return os << "{ module_path: " << meta.module_path << ", name: " << meta.name |
| << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ContextMetadata& meta) { |
| os << "{" << std::endl; |
| os << " story: " << meta.story << std::endl; |
| os << " link: " << meta.link << std::endl; |
| os << " mod: " << meta.mod << std::endl; |
| os << " entity: " << meta.entity << std::endl; |
| return os << "}"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ContextValue& value) { |
| return os << "{ type: " << fidl::ToUnderlying(value.type) |
| << ", content: " << value.content << ", meta: " << value.meta |
| << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ContextSelector& selector) { |
| return os << "{ type: " << fidl::ToUnderlying(selector.type) |
| << ", meta: " << *selector.meta << " }"; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ContextUpdate& update) { |
| os << "{" << std::endl; |
| for (auto it = update.values->begin(); it != update.values->end(); ++it) { |
| os << " " << (*it).key << ":" << std::endl; |
| int i = 0; |
| for (const auto& v : *(*it).value) { |
| os << " [" << i++ << "]: " << v; |
| } |
| } |
| os << "}"; |
| return os; |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const ContextQuery& query) { |
| os << "{" << std::endl; |
| for (auto it = query.selector->begin(); it != query.selector->end(); ++it) { |
| os << " " << (*it).key << ": " << (*it).value; |
| } |
| os << "}"; |
| return os; |
| } |
| |
| } // namespace modular |
| } // namespace fuchsia |