| Index: mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..be7043a4f51a9b842fb8c9ac4f44b98bdc9c7e5f
|
| --- /dev/null
|
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_data_view_declaration.tmpl
|
| @@ -0,0 +1,41 @@
|
| +class {{struct.name}}DataView {
|
| + public:
|
| + {{struct.name}}DataView(
|
| + internal::{{struct.name}}_Data* data,
|
| + mojo::internal::SerializationContext* context);
|
| +
|
| + // Whether the data represents a null struct.
|
| + // Note: Must not access the following methods if is_null() returns true.
|
| + bool is_null() const { return !data_; }
|
| +
|
| +{%- 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) {
|
| + DCHECK(!is_null());
|
| +
|
| +{%- 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_;
|
| +};
|
| +
|
|
|