[email protected] | 01cca004 | 2012-04-16 19:13:02 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #ifndef IPC_PARAM_TRAITS_WRITE_MACROS_H_ | ||||
6 | #define IPC_PARAM_TRAITS_WRITE_MACROS_H_ | ||||
7 | |||||
8 | // Null out all the macros that need nulling. | ||||
9 | #include "ipc/ipc_message_null_macros.h" | ||||
10 | |||||
11 | // STRUCT declarations cause corresponding STRUCT_TRAITS declarations to occur. | ||||
[email protected] | 6766b17 | 2011-11-21 18:29:36 | [diff] [blame] | 12 | #undef IPC_STRUCT_BEGIN_WITH_PARENT |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 13 | #undef IPC_STRUCT_MEMBER |
14 | #undef IPC_STRUCT_END | ||||
[email protected] | 6766b17 | 2011-11-21 18:29:36 | [diff] [blame] | 15 | #define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent) \ |
[email protected] | dedd0a9 | 2013-06-04 07:20:32 | [diff] [blame] | 16 | IPC_STRUCT_TRAITS_BEGIN(struct_name) |
[email protected] | 01cca004 | 2012-04-16 19:13:02 | [diff] [blame] | 17 | #define IPC_STRUCT_MEMBER(type, name, ...) IPC_STRUCT_TRAITS_MEMBER(name) |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 18 | #define IPC_STRUCT_END() IPC_STRUCT_TRAITS_END() |
19 | |||||
20 | // Set up so next include will generate write methods. | ||||
21 | #undef IPC_STRUCT_TRAITS_BEGIN | ||||
22 | #undef IPC_STRUCT_TRAITS_MEMBER | ||||
[email protected] | 94dc971d | 2011-03-05 19:08:32 | [diff] [blame] | 23 | #undef IPC_STRUCT_TRAITS_PARENT |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 24 | #undef IPC_STRUCT_TRAITS_END |
25 | #define IPC_STRUCT_TRAITS_BEGIN(struct_name) \ | ||||
rockot | 502c94f | 2016-02-03 20:20:16 | [diff] [blame] | 26 | void ParamTraits<struct_name>::Write(base::Pickle* m, const param_type& p) { |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 27 | #define IPC_STRUCT_TRAITS_MEMBER(name) WriteParam(m, p.name); |
[email protected] | 94dc971d | 2011-03-05 19:08:32 | [diff] [blame] | 28 | #define IPC_STRUCT_TRAITS_PARENT(type) ParamTraits<type>::Write(m, p); |
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 29 | #define IPC_STRUCT_TRAITS_END() } |
30 | |||||
[email protected] | dedd0a9 | 2013-06-04 07:20:32 | [diff] [blame] | 31 | #undef IPC_ENUM_TRAITS_VALIDATE |
32 | #define IPC_ENUM_TRAITS_VALIDATE(enum_name, validation_expression) \ | ||||
rockot | 502c94f | 2016-02-03 20:20:16 | [diff] [blame] | 33 | void ParamTraits<enum_name>::Write(base::Pickle* m, \ |
34 | const param_type& value) { \ | ||||
35 | DCHECK(validation_expression); \ | ||||
36 | m->WriteInt(static_cast<int>(value)); \ | ||||
[email protected] | 6476c72c | 2011-02-11 18:46:19 | [diff] [blame] | 37 | } |
38 | |||||
39 | #endif // IPC_PARAM_TRAITS_WRITE_MACROS_H_ | ||||
40 |