blob: df57adfb32e02286ccaed697a2aa29582ce150c0 [file] [log] [blame]
tsepez@chromium.org1ac46132011-02-12 03:46:19 +09001// Copyright (c) 2011 The Chromium Authors. All rights reserved.
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_MACROS_H_
6#define IPC_PARAM_TRAITS_MACROS_H_
7
8#include <string>
9
10// Traits generation for structs.
11#define IPC_STRUCT_TRAITS_BEGIN(struct_name) \
12 namespace IPC { \
13 template <> \
14 struct ParamTraits<struct_name> { \
15 typedef struct_name param_type; \
16 static void Write(Message* m, const param_type& p); \
17 static bool Read(const Message* m, void** iter, param_type* p); \
18 static void Log(const param_type& p, std::string* l); \
19 }; \
20 }
21
22#define IPC_STRUCT_TRAITS_MEMBER(name)
jam@chromium.org4ae3f562011-03-06 04:08:32 +090023#define IPC_STRUCT_TRAITS_PARENT(type)
tsepez@chromium.org1ac46132011-02-12 03:46:19 +090024#define IPC_STRUCT_TRAITS_END()
25
26// Traits generation for enums.
27#define IPC_ENUM_TRAITS(enum_name) \
28 namespace IPC { \
29 template <> \
30 struct ParamTraits<enum_name> { \
31 typedef enum_name param_type; \
32 static void Write(Message* m, const param_type& p); \
33 static bool Read(const Message* m, void** iter, param_type* p); \
34 static void Log(const param_type& p, std::string* l); \
35 }; \
36 }
37
38#endif // IPC_PARAM_TRAITS_MACROS_H_
39