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

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

Issue 1966933002: Mojo C++ bindings: switch the existing usage of StructTraits to use the new data view interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@26_reader
Patch Set: typeid() is not allowed :/ Created 4 years, 7 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/struct_serialization_declaration.tmpl
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl
index 0b2b01d4d4fa0f194aa05dfa2e56bcc4623cb6d3..8f72cf64d82cfd7a31cc51898e4328ada99edf34 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl
@@ -5,6 +5,7 @@
template <>
struct StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> {
static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; }
+ static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); }
{%- for field in struct.fields %}
{%- set return_ref = field.kind|is_object_kind or
@@ -28,8 +29,7 @@ struct StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> {
{%- endif %}
{%- endfor %}
- static bool ReadFromDataView({{mojom_type}}DataView input,
- {{mojom_type}}Ptr* output);
+ static bool Read({{mojom_type}}DataView input, {{mojom_type}}Ptr* output);
};
namespace internal {
@@ -65,34 +65,12 @@ struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> {
static bool Deserialize({{data_type}}* input,
UserType* output,
SerializationContext* context) {
- return ReadCaller<Traits, HasReadFromDataViewMethod<Traits>::value>::Run(
- input, output, context);
- }
-
+ if (!input)
+ return CallSetToNullIfExists<Traits>(output);
- public:
- template <typename Traits, bool use_read_from_data_view>
- struct ReadCaller;
-
- template <typename Traits>
- struct ReadCaller<Traits, false> {
- static bool Run({{data_type}}* input,
- UserType* output,
- SerializationContext* context) {
- {{mojom_type}}_Reader reader(input, context);
- return Traits::Read(reader, output);
- }
- };
-
- template <typename Traits>
- struct ReadCaller<Traits, true> {
- static bool Run({{data_type}}* input,
- UserType* output,
- SerializationContext* context) {
- {{mojom_type}}DataView data_view(input, context);
- return Traits::ReadFromDataView(data_view, output);
- }
- };
+ {{mojom_type}}DataView data_view(input, context);
+ return Traits::Read(data_view, output);
+ }
};
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698