| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IPC_PARAM_TRAITS_READ_MACROS_H_ |
| #define IPC_PARAM_TRAITS_READ_MACROS_H_ |
| |
| // Null out all the macros that need nulling. |
| #include"ipc/ipc_message_null_macros.h" |
| |
| // Set up so next include will generate read methods. |
| #undef IPC_STRUCT_TRAITS_BEGIN |
| #undef IPC_STRUCT_TRAITS_MEMBER |
| #undef IPC_STRUCT_TRAITS_PARENT |
| #undef IPC_STRUCT_TRAITS_END |
| #define IPC_STRUCT_TRAITS_BEGIN(struct_name) \ |
| boolParamTraits<struct_name>::Read( \ |
| constbase::Pickle* m,base::PickleIterator* iter, param_type* p){ \ |
| return |
| #define IPC_STRUCT_TRAITS_MEMBER(name)ReadParam(m, iter,&p->name)&& |
| #define IPC_STRUCT_TRAITS_PARENT(type)ParamTraits<type>::Read(m, iter, p)&& |
| #define IPC_STRUCT_TRAITS_END()1;} |
| |
| #undef IPC_ENUM_TRAITS_VALIDATE |
| #define IPC_ENUM_TRAITS_VALIDATE(enum_name, validation_expression) \ |
| boolParamTraits<enum_name>::Read( \ |
| constbase::Pickle* m,base::PickleIterator* iter, param_type* p){ \ |
| int value; \ |
| if(!iter->ReadInt(&value)) \ |
| returnfalse; \ |
| if(!(validation_expression)) \ |
| returnfalse; \ |
| *p=static_cast<param_type>(value); \ |
| returntrue; \ |
| } |
| |
| #endif// IPC_PARAM_TRAITS_READ_MACROS_H_ |
| |