Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Unified Diff: ipc/ipc_message_macros.h

Issue 6410007: Make the implementation .cc files go away, instead have the authors give us a... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ipc/ipc_message_macros.h
===================================================================
--- ipc/ipc_message_macros.h (revision 74010)
+++ ipc/ipc_message_macros.h (working copy)
@@ -1,11 +1,8 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2006-2011 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.
-// This header is meant to be included in multiple passes, hence no traditional
-// header guard.
-//
-// In your XXX_messages_internal.h file, before defining any messages do:
+// In your XXX_messages.h file, before defining any messages do:
// #define IPC_MESSAGE_START XMsgStart
// XMstStart value is from the IPCMessageStart enum in ipc_message_utils.h, and
// needs to be unique for each different file.
@@ -38,12 +35,13 @@
// ViewHostMsg_SyncMessageName::WriteReplyParams(reply_msg, out1, out2);
// Send(reply_msg);
+#ifndef IPC_IPC_MESSAGE_MACROS_H_
+#define IPC_IPC_MESSAGE_MACROS_H_
+// Can use #pragma once all XXX_messages.h files clean up IPC_MESSAGE_START
+
#include "ipc/ipc_message_utils.h"
+#include "ipc/ipc_param_traits_macros.h"
-// In case a file includes several X_messages.h files, we don't want to get
-// errors because each X_messages_internal.h file will define this.
-#undef IPC_MESSAGE_START
-
#if defined(IPC_MESSAGE_IMPL)
#include "ipc/ipc_message_impl_macros.h"
#elif defined(IPC_MESSAGE_MACROS_LOG_ENABLED)
@@ -60,7 +58,7 @@
typedef base::hash_map<uint32, LogFunction > LogFunctionMap;
LogFunctionMap g_log_function_mapping;
-#endif
+#endif // IPC_LOG_TABLE_CREATED
#define IPC_MESSAGE_LOG(msg_class) \
@@ -280,7 +278,7 @@
#define IPC_SYNC_MESSAGE_ROUTED5_4_EXTRA(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out, type4_out) \
IPC_MESSAGE_LOG(msg_class)
-#else
+#else // defined(IPC_MESSAGE_MACROS_LOG_ENABLED)
#define IPC_MESSAGE_CONTROL0_EXTRA(msg_class)
#define IPC_MESSAGE_CONTROL1_EXTRA(msg_class, type1)
@@ -352,8 +350,30 @@
#define IPC_SYNC_MESSAGE_ROUTED5_3_EXTRA(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out)
#define IPC_SYNC_MESSAGE_ROUTED5_4_EXTRA(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type4_out)
-#endif
+#endif // defined(IPC_MESSAGE_MACROS_LOG_ENABLED)
+// Force IPC message guard convention single-include semantics.
+#define IPC_MESSAGE_REINCLUDE 0
+
+// Macros for defining structures. May be subsequently redefined.
+#define IPC_STRUCT_BEGIN(struct_name) \
+ struct struct_name : IPC::NoParams { \
+ struct_name(); \
+ ~struct_name();
+#define IPC_STRUCT_MEMBER(type, name) type name;
+#define IPC_STRUCT_END(struct_name) \
+ }; \
+ IPC_STRUCT_TRAITS_BEGIN(struct_name) \
+ IPC_STRUCT_TRAITS_END(struct_name)
+
+// Macros for defining enums. May be subsequently redefined.
+#define IPC_ENUM_BEGIN(enum_name) enum enum_name {
+#define IPC_ENUM_VALUE(name) name,
+#define IPC_ENUM_END(enum_name) \
+ }; \
+ IPC_ENUM_TRAITS_BEGIN(enum_name) \
+ IPC_ENUM_TRAITS_END(enum_name)
+
// Note: we currently use __LINE__ to give unique IDs to messages within a file.
// They're globally unique since each file defines its own IPC_MESSAGE_START.
// Ideally, we wouldn't use line numbers, but instead use the __COUNTER__ macro,
@@ -1243,3 +1263,9 @@
// This corresponds to an enum value from IPCMessageStart.
#define IPC_MESSAGE_CLASS(message) \
message.type() >> 16
+
+#endif // IPC_IPC_MESSAGE_MACROS_H_
+
+
+// Clean up IPC_MESSAGE_START in this unguarded section.
+#undef IPC_MESSAGE_START

Powered by Google App Engine
This is Rietveld 408576698