summaryrefslogtreecommitdiff
path: root/chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl')
-rw-r--r--chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl35
1 files changed, 35 insertions, 0 deletions
diff --git a/chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl b/chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
new file mode 100644
index 00000000000..41c96d36f96
--- /dev/null
+++ b/chromium/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
@@ -0,0 +1,35 @@
+class {{struct.name}}DataView {
+ public:
+ {{struct.name}}DataView(
+ internal::{{struct.name}}_Data* data,
+ mojo::internal::SerializationContext* context);
+
+{%- for pf in struct.packed.packed_fields_in_ordinal_order %}
+{%- set kind = pf.field.kind -%}
+{%- set name = pf.field.name -%}
+{%- if kind|is_struct_kind or kind|is_array_kind or kind|is_string_kind %}
+ template <typename UserType>
+ bool Read{{name|under_to_camel}}(UserType* value) {
+{%- if pf.min_version != 0 %}
+ auto pointer = data_->header_.version >= {{pf.min_version}}
+ ? data_->{{name}}.ptr : nullptr;
+{%- else %}
+ auto pointer = data_->{{name}}.ptr;
+{%- endif %}
+ return mojo::internal::Deserialize<{{kind|unmapped_type_for_serializer}}>(
+ pointer, value, context_);
+ }
+{%- elif kind|is_map_kind or kind|is_union_kind %}
+ bool Read{{name|under_to_camel}}({{kind|cpp_wrapper_type}}* value);
+{%- elif kind|is_interface_kind or kind|is_any_handle_kind or
+ kind|is_associated_kind %}
+ {{kind|cpp_wrapper_type}} Take{{name|under_to_camel}}();
+{%- else %}
+ {{kind|cpp_wrapper_type}} {{name}}() const;
+{%- endif %}
+{%- endfor %}
+ private:
+ internal::{{struct.name}}_Data* data_;
+ mojo::internal::SerializationContext* context_;
+};
+