Index: third_party/inspector_protocol/templates/Imported_h.template |
diff --git a/third_party/inspector_protocol/templates/Imported_h.template b/third_party/inspector_protocol/templates/Imported_h.template |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c23b8fe87c9f556a4b3e853477c352fe69bcafea |
--- /dev/null |
+++ b/third_party/inspector_protocol/templates/Imported_h.template |
@@ -0,0 +1,51 @@ |
+// 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 "{{config.protocol.package}}/Protocol.h" |
+#include {{format_include(config.imported.header if config.imported.header else "\"%s/%s.h\"" % (config.imported.package, domain.domain))}} |
+ |
+{% 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 (type.exported) %}{% 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}}> parse(protocol::Value* value, ErrorSupport* errors) |
+ { |
+ if (!value) { |
+ errors->addError("value expected"); |
+ return nullptr; |
+ } |
+ String json = value->toJSONString(); |
+ 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> serialize(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> serialize(const std::unique_ptr<{{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}>& value) |
+ { |
+ return serialize(value.get()); |
+ } |
+}; |
+ {% endfor %} |
+ |
+{% for namespace in config.protocol.namespace %} |
+} // namespace {{namespace}} |
+{% endfor %} |
+ |
+#endif // !defined({{"_".join(config.protocol.namespace)}}_{{domain.domain}}_imported_h) |