diff options
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.tmpl | 35 |
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_; +}; + |