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

Unified Diff: ipc/ipc_message_macros.h

Issue 6683014: Change common_message_generator code block. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 9 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
« no previous file with comments | « content/common/content_message_generator.cc ('k') | ipc/ipc_message_null_macros.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ipc/ipc_message_macros.h
===================================================================
--- ipc/ipc_message_macros.h (revision 77874)
+++ ipc/ipc_message_macros.h (working copy)
@@ -29,9 +29,9 @@
// A message generator .h header file pulls in all other message-declaring
// headers for a given component. It is included by a message generator
// .cc file, which is where all the generated code will wind up. Typically,
-// you will use an existing generator (e.g. common_message_generator.cc and
-// common_message_generator.h in /chrome/common), but there are circumstances
-// where you may add a new one.
+// you will use an existing generator (e.g. common_message_generator.cc
+// in /chrome/common), but there are circumstances where you may add a
+// new one.
//
// In the rare cicrucmstances where you can't re-use an existing file,
// your YYY_message_generator.cc file for a component YYY would contain
@@ -45,15 +45,19 @@
// // Generate destructors.
// #include "ipc/struct_destructor_macros.h"
// #include "path/to/YYY_message_generator.h"
-// namespace IPC {
// // Generate param traits write methods.
// #include "ipc/param_traits_write_macros.h"
+// namespace IPC {
// #include "path/to/YYY_message_generator.h"
+// } // namespace IPC
// // Generate param traits read methods.
// #include "ipc/param_traits_read_macros.h"
+// namespace IPC {
// #include "path/to/YYY_message_generator.h"
+// } // namespace IPC
// // Generate param traits log methods.
// #include "ipc/param_traits_log_macros.h"
+// namespace IPC {
// #include "path/to/YYY_message_generator.h"
// } // namespace IPC
//
@@ -186,7 +190,7 @@
#define IPC_STRUCT_END() };
// Message macros collect specific numbers of arguments and funnel them into
-// the common message generation macro.
+// the common message generation macro. These should never be redefined.
#define IPC_MESSAGE_CONTROL0(msg_class) \
IPC_MESSAGE_DECL(EMPTY, CONTROL, msg_class, 0, 0, (), ())
@@ -406,11 +410,7 @@
// Common message macro which dispatches into one of the 6 (sync x kind)
// routines. There is a way that these 6 cases can be lumped together,
// but the macros get very complicated in that case.
-// 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 (a possibility
-// is to instead use the __COUNTER__ macro, but it needs gcc 4.3 and xcode
-// doesn't use it yet).
+// Note: intended be redefined to generate other information.
#define IPC_MESSAGE_DECL(sync, kind, msg_class, \
in_cnt, out_cnt, in_list, out_list) \
IPC_##sync##_##kind##_DECL(msg_class, in_cnt, out_cnt, in_list, out_list) \
@@ -419,14 +419,14 @@
#define IPC_EMPTY_CONTROL_DECL(msg_class, in_cnt, out_cnt, in_list, out_list) \
class msg_class : public IPC::Message { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class() : IPC::Message(MSG_ROUTING_CONTROL, ID, PRIORITY_NORMAL) {} \
};
#define IPC_EMPTY_ROUTED_DECL(msg_class, in_cnt, out_cnt, in_list, out_list) \
class msg_class : public IPC::Message { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class(int32 routing_id) \
: IPC::Message(routing_id, ID, PRIORITY_NORMAL) {} \
};
@@ -435,7 +435,7 @@
class msg_class : \
public IPC::MessageWithTuple<IPC_TUPLE_IN_##in_cnt in_list> { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class(IPC_TYPE_IN_##in_cnt in_list); \
~msg_class(); \
static void Log(std::string* name, const Message* msg, std::string* l); \
@@ -445,7 +445,7 @@
class msg_class : \
public IPC::MessageWithTuple<IPC_TUPLE_IN_##in_cnt in_list> { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class(int32 routing_id IPC_COMMA_##in_cnt \
IPC_TYPE_IN_##in_cnt in_list); \
~msg_class(); \
@@ -457,7 +457,7 @@
public IPC::MessageWithReply<IPC_TUPLE_IN_##in_cnt in_list, \
IPC_TUPLE_OUT_##out_cnt out_list> { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class(IPC_TYPE_IN_##in_cnt in_list \
IPC_COMMA_AND_##in_cnt(IPC_COMMA_##out_cnt) \
IPC_TYPE_OUT_##out_cnt out_list); \
@@ -470,7 +470,7 @@
public IPC::MessageWithReply<IPC_TUPLE_IN_##in_cnt in_list, \
IPC_TUPLE_OUT_##out_cnt out_list> { \
public: \
- enum { ID = (IPC_MESSAGE_START << 16) + __LINE__ }; \
+ enum { ID = IPC_MESSAGE_ID() }; \
msg_class(int32 routing_id \
IPC_COMMA_OR_##in_cnt(IPC_COMMA_##out_cnt) \
IPC_TYPE_IN_##in_cnt in_list \
@@ -671,6 +671,16 @@
#define IPC_COMMA_OR_4(x) ,
#define IPC_COMMA_OR_5(x) ,
+// Message IDs
+// 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 (a possibility
+// is to instead use the __COUNTER__ macro, but it needs gcc 4.3 and xcode
+// doesn't use it yet).
+#define IPC_MESSAGE_ID() ((IPC_MESSAGE_START << 16) + __LINE__)
+#define IPC_MESSAGE_ID_CLASS(id) ((id) >> 16)
+#define IPC_MESSAGE_ID_LINE(id) ((id) & 0xffff)
+
// Message crackers and handlers.
// Prefer to use the IPC_BEGIN_MESSAGE_MAP_EX to the older macros since they
// allow you to detect when a message could not be de-serialized. Usage:
@@ -754,7 +764,7 @@
// This corresponds to an enum value from IPCMessageStart.
#define IPC_MESSAGE_CLASS(message) \
- message.type() >> 16
+ IPC_MESSAGE_ID_CLASS(message.type())
#endif // IPC_IPC_MESSAGE_MACROS_H_
« no previous file with comments | « content/common/content_message_generator.cc ('k') | ipc/ipc_message_null_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698