| Index: chrome/common/safe_browsing/ipc_protobuf_message_macros.h
|
| diff --git a/chrome/common/safe_browsing/ipc_protobuf_message_macros.h b/chrome/common/safe_browsing/ipc_protobuf_message_macros.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2771480caaf613445485d7b76f41ae084ea1b923
|
| --- /dev/null
|
| +++ b/chrome/common/safe_browsing/ipc_protobuf_message_macros.h
|
| @@ -0,0 +1,57 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Protobuf Messages over IPC
|
| +//
|
| +// Protobuf messages are registered with IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN() and
|
| +// friends in much the same way as other externally-defined structs (see
|
| +// ipc/ipc_message_macros.h). These macros also cause only registration of the
|
| +// protobuf message type IPC with message generation. Within matching calls to
|
| +// _BEGIN() and _END(), one may use:
|
| +// - IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER() to register an
|
| +// optional field of fundamental type (any scalar message field type save
|
| +// "string" and "bytes").
|
| +// - IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER() to register an
|
| +// optional field of complex type (scalar message field type "string" or
|
| +// "bytes", or another message type).
|
| +// - IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER() to register a
|
| +// repeated field of complex type (scalar message field type "string" or
|
| +// "bytes", or another message type).
|
| +//
|
| +// Enum types in protobuf messages are registered with
|
| +// IPC_ENUM_TRAITS_VALIDATE() as with any other enum. In this case, the
|
| +// validation expression should be the _IsValid() function provided by the
|
| +// generated protobuf code. For example:
|
| +//
|
| +// IPC_ENUM_TRAITS_VALIDATE(MyEnumType, MyEnumType_IsValid(value))
|
| +
|
| +#ifndef CHROME_COMMON_SAFE_BROWSING_IPC_PROTOBUF_MESSAGE_MACROS_H_
|
| +#define CHROME_COMMON_SAFE_BROWSING_IPC_PROTOBUF_MESSAGE_MACROS_H_
|
| +
|
| +#include <string>
|
| +
|
| +#define IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(message_name) \
|
| + namespace IPC { \
|
| + template <> \
|
| + struct IPC_MESSAGE_EXPORT ParamTraits<message_name> { \
|
| + typedef message_name param_type; \
|
| + static void Write(Message* m, const param_type& p); \
|
| + static bool Read(const Message* m, PickleIterator* iter, param_type* p); \
|
| + static void Log(const param_type& p, std::string* l); \
|
| + \
|
| + private: \
|
| + template <class P> \
|
| + static bool ReadParamF(const Message* m, \
|
| + PickleIterator* iter, \
|
| + param_type* p, \
|
| + void (param_type::*setter_function)(P)); \
|
| + }; \
|
| + } // namespace IPC
|
| +
|
| +#define IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(name)
|
| +#define IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(name)
|
| +#define IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(name)
|
| +#define IPC_PROTOBUF_MESSAGE_TRAITS_END()
|
| +
|
| +#endif // CHROME_COMMON_SAFE_BROWSING_IPC_PROTOBUF_MESSAGE_MACROS_H_
|
|
|