Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl

Issue 2165233003: Mojo C++ bindings: provide data view for all object types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl
index c4f3e0709ac76a073b029ebd5b34125fad0a9df9..2daf6e67fdb088c126279d488da7fa8c6c31f3ea 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl
@@ -35,6 +35,17 @@ namespace {{variant}} {
{%- endfor %}
{%- endmacro %}
+{%- macro data_view_traits(kind) %}
+namespace mojo {
+namespace internal {
+template <>
+struct DataViewTraits<{{kind|get_qualified_name_for_kind}}DataView> {
+ using MojomType = {{kind|get_qualified_name_for_kind}}Ptr;
+};
+} // namespace internal
+} // namespace mojo
+{%- endmacro %}
+
#ifndef {{header_guard}}
#define {{header_guard}}
@@ -47,7 +58,7 @@ namespace {{variant}} {
#include "base/callback.h"
#include "base/optional.h"
-#include "base/strings/string_piece.h"
+#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
@@ -57,10 +68,13 @@ namespace {{variant}} {
#include "mojo/public/cpp/bindings/lib/control_message_proxy.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/map.h"
+#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/message_filter.h"
#include "mojo/public/cpp/bindings/native_enum.h"
#include "mojo/public/cpp/bindings/native_struct.h"
+#include "mojo/public/cpp/bindings/native_struct_data_view.h"
#include "mojo/public/cpp/bindings/no_interface.h"
+#include "mojo/public/cpp/bindings/string_data_view.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "{{variant_path}}-internal.h"
@@ -141,6 +155,7 @@ using {{interface.name}}AssociatedRequest =
{% for struct in structs %}
{%- if struct|is_native_only_kind %}
using {{struct.name}} = mojo::NativeStruct;
+using {{struct.name}}DataView = mojo::NativeStructDataView;
using {{struct.name}}Ptr = mojo::NativeStructPtr;
{%- else %}
class {{struct.name}};
@@ -156,6 +171,7 @@ using {{struct.name}}Ptr = mojo::StructPtr<{{struct.name}}>;
{#--- Union Forward Declarations -#}
{% for union in unions %}
class {{union.name}};
+class {{union.name}}DataView;
{% if union|should_inline_union %}
typedef mojo::InlinedStructPtr<{{union.name}}> {{union.name}}Ptr;
{% else %}
@@ -217,6 +233,11 @@ namespace std {
{% if struct|should_inline and not struct|is_native_only_kind %}
{% include "wrapper_class_declaration.tmpl" %}
{% include "struct_data_view_declaration.tmpl" %}
+
+{{namespace_end()}}
+{{data_view_traits(struct)}}
+{{namespace_begin()}}
+
{% endif %}
{%- endfor %}
@@ -225,6 +246,12 @@ namespace std {
{#--- Unions #}
{% for union in unions %}
{% include "wrapper_union_class_declaration.tmpl" %}
+{% include "union_data_view_declaration.tmpl" %}
+
+{{namespace_end()}}
+{{data_view_traits(union)}}
+{{namespace_begin()}}
+
{%- endfor %}
{#--- Non-inlined structs #}
@@ -232,6 +259,11 @@ namespace std {
{% if not struct|should_inline and not struct|is_native_only_kind %}
{% include "wrapper_class_declaration.tmpl" %}
{% include "struct_data_view_declaration.tmpl" %}
+
+{{namespace_end()}}
+{{data_view_traits(struct)}}
+{{namespace_begin()}}
+
{% endif %}
{%- endfor %}

Powered by Google App Engine
This is Rietveld 408576698