| // Copyright 2017 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 LIB_CONTEXT_CPP_CONTEXT_METADATA_BUILDER_H_ |
| #define LIB_CONTEXT_CPP_CONTEXT_METADATA_BUILDER_H_ |
| |
| #include <fuchsia/modular/cpp/fidl.h> |
| |
| namespace maxwell { |
| |
| class ContextMetadataBuilder { |
| public: |
| ContextMetadataBuilder(); |
| explicit ContextMetadataBuilder( |
| fuchsia::modular::ContextMetadata initial_value); |
| |
| ContextMetadataBuilder& SetStoryId(const fidl::StringPtr& story_id); |
| ContextMetadataBuilder& SetStoryFocused(bool focused); |
| |
| ContextMetadataBuilder& SetModuleUrl(const fidl::StringPtr& url); |
| ContextMetadataBuilder& SetModulePath(const std::vector<std::string>& path); |
| ContextMetadataBuilder& SetModuleFocused(bool focused); |
| |
| ContextMetadataBuilder& SetEntityTopic(const fidl::StringPtr& topic); |
| ContextMetadataBuilder& AddEntityType(const fidl::StringPtr& type); |
| ContextMetadataBuilder& SetEntityTypes(const std::vector<std::string>& types); |
| |
| ContextMetadataBuilder& SetLinkPath( |
| const std::vector<std::string>& module_path, const std::string& name); |
| |
| // Build() or BuildPtr() can be called only once, as they move |m_|. |
| fuchsia::modular::ContextMetadata Build(); |
| fuchsia::modular::ContextMetadataPtr BuildPtr(); |
| |
| private: |
| fuchsia::modular::StoryMetadataPtr& StoryMetadata(); |
| fuchsia::modular::ModuleMetadataPtr& ModuleMetadata(); |
| fuchsia::modular::EntityMetadataPtr& EntityMetadata(); |
| fuchsia::modular::LinkMetadataPtr& LinkMetadata(); |
| |
| fuchsia::modular::ContextMetadata m_; |
| }; |
| |
| } // namespace maxwell |
| |
| #endif // LIB_CONTEXT_CPP_CONTEXT_METADATA_BUILDER_H_ |