// This file is generated // Copyright (c) 2016 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. #ifndef {{"_".join(config.protocol.namespace)}}_{{domain.domain}}_imported_h #define {{"_".join(config.protocol.namespace)}}_{{domain.domain}}_imported_h #include {{format_include(config.protocol.package, "Protocol")}} {% if config.imported.header %} #include {{format_include(config.imported.header)}} {% else %} #include {{format_include(config.imported.package, domain.domain)}} {% endif %} {% for namespace in config.protocol.namespace %} namespace {{namespace}} { {% endfor %} {% for type in domain.types %} {% if not (type.type == "object") or not ("properties" in type) or not protocol.is_imported(domain.domain, type.id) %}{% continue %}{% endif %} template<> struct ValueConversions<{{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}> { static std::unique_ptr<{{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}> fromValue(protocol::Value* value, ErrorSupport* errors) { if (!value) { errors->addError("value expected"); return nullptr; } String json = value->serialize(); auto result = {{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}::fromJSONString({{config.imported.to_imported_string % "json"}}); if (!result) errors->addError("cannot parse"); return result; } static std::unique_ptr toValue(const {{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}* value) { auto json = value->toJSONString(); return SerializedValue::create({{config.imported.from_imported_string % "std::move(json)"}}); } static std::unique_ptr toValue(const std::unique_ptr<{{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}>& value) { return toValue(value.get()); } }; {% endfor %} {% for namespace in config.protocol.namespace %} } // namespace {{namespace}} {% endfor %} #endif // !defined({{"_".join(config.protocol.namespace)}}_{{domain.domain}}_imported_h)