| // 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<protocol::Value> 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<protocol::Value> 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) |