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

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

Issue 294833002: Mojo: more idiomatic C++ bindings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 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_definition.tmpl
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
index 3420b0b23bfb5eca5ab861efb2a21ccb5cd34fc8..005a8384767ee3a7ac4007cac3e4aace0d416398 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl
@@ -2,45 +2,13 @@
{%- set class_name = struct.name ~ "_Data" %}
// static
-{{class_name}}* {{class_name}}::New(mojo::Buffer* buf, mojo::Buffer::Destructor dtor) {
- return new (buf->Allocate(sizeof({{class_name}}), dtor)) {{class_name}}();
+{{class_name}}* {{class_name}}::New(mojo::internal::Buffer* buf) {
+ return new (buf->Allocate(sizeof({{class_name}}))) {{class_name}}();
}
{{class_name}}::{{class_name}}() {
- _header_.num_bytes = sizeof(*this);
- _header_.num_fields = {{struct.packed.packed_fields|length}};
-}
-
-size_t {{class_name}}::ComputeSize() const {
- size_t result = sizeof(*this);
-{%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %}
- if ({{pf.field.name}}_.ptr)
- result += {{pf.field.name}}_.ptr->ComputeSize();
-{%- endfor %}
- return result;
-}
-
-{{class_name}}* {{class_name}}::Clone(mojo::Buffer* buf) const {
- {{class_name}}* clone = New(buf);
- memcpy(clone, this, sizeof(*this));
-{%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %}
- if ({{pf.field.name}}_.ptr)
- clone->set_{{pf.field.name}}({{pf.field.name}}_.ptr->Clone(buf));
-{%- endfor %}
-{%- for pf in struct.packed.packed_fields if pf.field.kind|is_handle_kind %}
- mojo::internal::ResetIfNonNull({{pf.field.name}}());
-{%- endfor %}
- return clone;
-}
-
-void {{class_name}}::CloseHandles() {
-{%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind %}
- if ({{pf.field.name}}_.ptr)
- {{pf.field.name}}_.ptr->CloseHandles();
-{%- endfor %}
-{%- if struct|is_struct_with_handles %}
- {{struct.name}}_Data_Destructor(this);
-{%- endif %}
+ header_.num_bytes = sizeof(*this);
+ header_.num_fields = {{struct.packed.packed_fields|length}};
}
void {{class_name}}::EncodePointersAndHandles(

Powered by Google App Engine
This is Rietveld 408576698