| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ |
| 6 #define MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ |
| 7 | 7 |
| 8 namespace mojo { | 8 namespace mojo { |
| 9 | 9 |
| 10 // This must be specialized for any type |T| to be serialized/deserialized as | 10 // This must be specialized for any type |T| to be serialized/deserialized as |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 // to getters. After serialization is done, it calls TearDownContext() so | 115 // to getters. After serialization is done, it calls TearDownContext() so |
| 116 // that you can do any necessary cleanup. | 116 // that you can do any necessary cleanup. |
| 117 // | 117 // |
| 118 // In the description above, methods having an |input| parameter define it as | 118 // In the description above, methods having an |input| parameter define it as |
| 119 // const reference of T. Actually, it can be a non-const reference of T too. | 119 // const reference of T. Actually, it can be a non-const reference of T too. |
| 120 // E.g., if T contains Mojo handles or interfaces whose ownership needs to be | 120 // E.g., if T contains Mojo handles or interfaces whose ownership needs to be |
| 121 // transferred. Correspondingly, it requies you to always give non-const T | 121 // transferred. Correspondingly, it requies you to always give non-const T |
| 122 // reference/value to the Mojo bindings for serialization: | 122 // reference/value to the Mojo bindings for serialization: |
| 123 // - if T is used in the "type_mappings" section of a typemap config file, | 123 // - if T is used in the "type_mappings" section of a typemap config file, |
| 124 // you need to declare it as pass-by-value: | 124 // you need to declare it as pass-by-value: |
| 125 // type_mappings = [ "MojomType=T(move_only)" ] | 125 // type_mappings = [ "MojomType=T[move_only]" ] |
| 126 // or | 126 // or |
| 127 // type_mappings = [ "MojomType=T(copyable_pass_by_value)" ] | 127 // type_mappings = [ "MojomType=T[copyable_pass_by_value]" ] |
| 128 // | 128 // |
| 129 // - if another type U's StructTraits/UnionTraits has a getter for T, it | 129 // - if another type U's StructTraits/UnionTraits has a getter for T, it |
| 130 // needs to return non-const reference/value. | 130 // needs to return non-const reference/value. |
| 131 // | 131 // |
| 132 // EXAMPLE: | 132 // EXAMPLE: |
| 133 // | 133 // |
| 134 // Mojom definition: | 134 // Mojom definition: |
| 135 // struct Bar {}; | 135 // struct Bar {}; |
| 136 // struct Foo { | 136 // struct Foo { |
| 137 // int32 f_integer; | 137 // int32 f_integer; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 157 // | 157 // |
| 158 // static bool Read(FooDataView data, CustomFoo* output); | 158 // static bool Read(FooDataView data, CustomFoo* output); |
| 159 // }; | 159 // }; |
| 160 // | 160 // |
| 161 template <typename DataViewType, typename T> | 161 template <typename DataViewType, typename T> |
| 162 struct StructTraits; | 162 struct StructTraits; |
| 163 | 163 |
| 164 } // namespace mojo | 164 } // namespace mojo |
| 165 | 165 |
| 166 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ | 166 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRUCT_TRAITS_H_ |
| OLD | NEW |