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

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
(Empty)
1 {%- import "struct_macros.tmpl" as struct_macros %}
2
3 size_t {{struct.name}}::GetSerializedSize() const {
4 return GetSerializedSize_(*this);
5 }
6
7 bool {{struct.name}}::Serialize(void* buf,
8 size_t buf_size,
9 size_t* bytes_written) {
10 MOJO_DCHECK(buf);
11
12 mojo::internal::FixedBuffer overlay_buf;
13 overlay_buf.Initialize(buf, buf_size);
14
15 internal::{{struct.name}}_Data* output_ptr;
16 auto err = Serialize_(this, &overlay_buf, &output_ptr);
17 if (err != mojo::internal::ValidationError::NONE) {
18 // TODO(vardhan): Once Serialize_() outputs handles that it serialized
19 // (even partially, if there are failures), we should CHECK fail here if
20 // handles are non-empty.
21 MOJO_DLOG(ERROR) << "Could not serialize: " <<
22 mojo::internal::ValidationErrorToString(err);
23
24 if (bytes_written)
25 *bytes_written = overlay_buf.BytesUsed();
26 return false;
27 }
28
29 std::vector<mojo::Handle> handles;
30 output_ptr->EncodePointersAndHandles(&handles);
31 MOJO_CHECK(handles.empty()) << "Serialize() does not support handles.";
32
33 if (bytes_written)
34 *bytes_written = overlay_buf.BytesUsed();
35 return true;
36 }
37
38 bool {{struct.name}}::Deserialize(void* buf, size_t buf_size) {
39 MOJO_DCHECK(buf);
40
41 mojo::internal::BoundsChecker checker(buf, buf_size, 0);
42
43 std::string* err_str = nullptr;
44 #if !defined(NDEBUG)
45 std::string err_str2;
46 err_str = &err_str2;
47 #endif
48
49 mojo::internal::ValidationError err =
50 internal::{{struct.name}}_Data::Validate(buf, &checker, err_str);
51 if (err != mojo::internal::ValidationError::NONE) {
52 MOJO_DLOG(ERROR) << "Deserialization error "
53 << mojo::internal::ValidationErrorToString(err)
54 << ": " << *err_str;
55 return false;
56 }
57
58 DeserializeWithoutValidation(buf);
59 return true;
60 }
61
62 // TODO(vardhan): Make this |buf| a |const void*| once deserialization becomes
63 // immutable.
64 void {{struct.name}}::DeserializeWithoutValidation(void* buf) {
65 MOJO_DCHECK(buf);
66
67 internal::{{struct.name}}_Data* input =
68 static_cast<internal::{{struct.name}}_Data*>(buf);
69 std::vector<mojo::Handle> handles;
70 input->DecodePointersAndHandles(&handles);
71 MOJO_CHECK(handles.empty()) << "Deserialization does not support handles.";
72
73 Deserialize_(input, this);
74 }
75
76 size_t GetSerializedSize_(const {{struct.name}}& input) {
77 {{struct_macros.get_serialized_size(struct, "input.%s")}}
78 return size;
79 }
80
81 mojo::internal::ValidationError Serialize_(
82 {{struct.name}}* input,
83 mojo::internal::Buffer* buf,
84 internal::{{struct.name}}_Data** output) {
85 if (input) {
86 {{struct_macros.serialize(struct, struct.name ~ " struct", "input->%s", "res ult", "buf", true)|indent(2)}}
87 *output = result;
88 } else {
89 *output = nullptr;
90 }
91 return mojo::internal::ValidationError::NONE;
92 }
93
94 void Deserialize_(internal::{{struct.name}}_Data* input,
95 {{struct.name}}* result) {
96 if (input) {
97 {{struct_macros.deserialize(struct, "input", "result->%s")|indent(2)}}
98 }
99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698