From d7a5e3e4302a31eca7e7bbc8fb61b5ec0fa9d5d9 Mon Sep 17 00:00:00 2001 From: "tsepez@chromium.org" Date: Sat, 12 Mar 2011 16:28:36 +0000 Subject: Change common_message_generator code block. Makes namespace IPC {} more tightly wrapped around the inclusion of the genertor header file. Updates comments in ipc_message_macros to indicate this new style of block. Makes message ID generation into a macro so can be re-used in forthcoming ipclist CL. Simplfies the NULL macros. Adds #pragma once to param traits, because we can. Review URL: http://codereview.chromium.org/6683014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77943 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/common/common_message_generator.cc | 8 +- content/common/content_message_generator.cc | 9 +- ipc/ipc_message_macros.h | 44 +++++---- ipc/ipc_message_null_macros.h | 148 +--------------------------- ipc/param_traits_log_macros.h | 1 + ipc/param_traits_read_macros.h | 1 + ipc/param_traits_write_macros.h | 1 + 7 files changed, 45 insertions(+), 167 deletions(-) diff --git a/chrome/common/common_message_generator.cc b/chrome/common/common_message_generator.cc index e349e3b..6b822ec 100644 --- a/chrome/common/common_message_generator.cc +++ b/chrome/common/common_message_generator.cc @@ -15,19 +15,21 @@ #include "ipc/struct_destructor_macros.h" #include "chrome/common/common_message_generator.h" -namespace IPC { - // Generate param traits write methods. #include "ipc/param_traits_write_macros.h" +namespace IPC { #include "chrome/common/common_message_generator.h" +} // namespace IPC // Generate param traits read methods. #include "ipc/param_traits_read_macros.h" +namespace IPC { #include "chrome/common/common_message_generator.h" +} // namespace IPC // Generate param traits log methods. #include "ipc/param_traits_log_macros.h" +namespace IPC { #include "chrome/common/common_message_generator.h" - } // namespace IPC diff --git a/content/common/content_message_generator.cc b/content/common/content_message_generator.cc index eacddef..00f2237 100644 --- a/content/common/content_message_generator.cc +++ b/content/common/content_message_generator.cc @@ -15,18 +15,21 @@ #include "ipc/struct_destructor_macros.h" #include "content/common/content_message_generator.h" -namespace IPC { - // Generate param traits write methods. #include "ipc/param_traits_write_macros.h" +namespace IPC { #include "content/common/content_message_generator.h" +} // namespace IPC // Generate param traits read methods. #include "ipc/param_traits_read_macros.h" +namespace IPC { #include "content/common/content_message_generator.h" +} // namespace IPC // Generate param traits log methods. #include "ipc/param_traits_log_macros.h" +namespace IPC { #include "content/common/content_message_generator.h" - } // namespace IPC + diff --git a/ipc/ipc_message_macros.h b/ipc/ipc_message_macros.h index a41cadf..bdc5acc 100644 --- a/ipc/ipc_message_macros.h +++ b/ipc/ipc_message_macros.h @@ -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 { \ 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 { \ 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 { \ 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 { \ 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 @@ LogFunctionMap g_log_function_mapping; #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 @@ LogFunctionMap g_log_function_mapping; // 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_ diff --git a/ipc/ipc_message_null_macros.h b/ipc/ipc_message_null_macros.h index fb57df5..7cd02f5 100644 --- a/ipc/ipc_message_null_macros.h +++ b/ipc/ipc_message_null_macros.h @@ -14,78 +14,7 @@ #undef IPC_STRUCT_TRAITS_PARENT #undef IPC_STRUCT_TRAITS_END #undef IPC_ENUM_TRAITS -#undef IPC_MESSAGE_CONTROL0 -#undef IPC_MESSAGE_CONTROL1 -#undef IPC_MESSAGE_CONTROL2 -#undef IPC_MESSAGE_CONTROL3 -#undef IPC_MESSAGE_CONTROL4 -#undef IPC_MESSAGE_CONTROL5 -#undef IPC_MESSAGE_ROUTED0 -#undef IPC_MESSAGE_ROUTED1 -#undef IPC_MESSAGE_ROUTED2 -#undef IPC_MESSAGE_ROUTED3 -#undef IPC_MESSAGE_ROUTED4 -#undef IPC_MESSAGE_ROUTED5 -#undef IPC_SYNC_MESSAGE_CONTROL0_0 -#undef IPC_SYNC_MESSAGE_CONTROL0_1 -#undef IPC_SYNC_MESSAGE_CONTROL0_2 -#undef IPC_SYNC_MESSAGE_CONTROL0_3 -#undef IPC_SYNC_MESSAGE_CONTROL0_4 -#undef IPC_SYNC_MESSAGE_CONTROL1_0 -#undef IPC_SYNC_MESSAGE_CONTROL1_1 -#undef IPC_SYNC_MESSAGE_CONTROL1_2 -#undef IPC_SYNC_MESSAGE_CONTROL1_3 -#undef IPC_SYNC_MESSAGE_CONTROL1_4 -#undef IPC_SYNC_MESSAGE_CONTROL2_0 -#undef IPC_SYNC_MESSAGE_CONTROL2_1 -#undef IPC_SYNC_MESSAGE_CONTROL2_2 -#undef IPC_SYNC_MESSAGE_CONTROL2_3 -#undef IPC_SYNC_MESSAGE_CONTROL2_4 -#undef IPC_SYNC_MESSAGE_CONTROL3_0 -#undef IPC_SYNC_MESSAGE_CONTROL3_1 -#undef IPC_SYNC_MESSAGE_CONTROL3_2 -#undef IPC_SYNC_MESSAGE_CONTROL3_3 -#undef IPC_SYNC_MESSAGE_CONTROL3_4 -#undef IPC_SYNC_MESSAGE_CONTROL4_0 -#undef IPC_SYNC_MESSAGE_CONTROL4_1 -#undef IPC_SYNC_MESSAGE_CONTROL4_2 -#undef IPC_SYNC_MESSAGE_CONTROL4_3 -#undef IPC_SYNC_MESSAGE_CONTROL4_4 -#undef IPC_SYNC_MESSAGE_CONTROL5_0 -#undef IPC_SYNC_MESSAGE_CONTROL5_1 -#undef IPC_SYNC_MESSAGE_CONTROL5_2 -#undef IPC_SYNC_MESSAGE_CONTROL5_3 -#undef IPC_SYNC_MESSAGE_CONTROL5_4 -#undef IPC_SYNC_MESSAGE_ROUTED0_0 -#undef IPC_SYNC_MESSAGE_ROUTED0_1 -#undef IPC_SYNC_MESSAGE_ROUTED0_2 -#undef IPC_SYNC_MESSAGE_ROUTED0_3 -#undef IPC_SYNC_MESSAGE_ROUTED0_4 -#undef IPC_SYNC_MESSAGE_ROUTED1_0 -#undef IPC_SYNC_MESSAGE_ROUTED1_1 -#undef IPC_SYNC_MESSAGE_ROUTED1_2 -#undef IPC_SYNC_MESSAGE_ROUTED1_3 -#undef IPC_SYNC_MESSAGE_ROUTED1_4 -#undef IPC_SYNC_MESSAGE_ROUTED2_0 -#undef IPC_SYNC_MESSAGE_ROUTED2_1 -#undef IPC_SYNC_MESSAGE_ROUTED2_2 -#undef IPC_SYNC_MESSAGE_ROUTED2_3 -#undef IPC_SYNC_MESSAGE_ROUTED2_4 -#undef IPC_SYNC_MESSAGE_ROUTED3_0 -#undef IPC_SYNC_MESSAGE_ROUTED3_1 -#undef IPC_SYNC_MESSAGE_ROUTED3_2 -#undef IPC_SYNC_MESSAGE_ROUTED3_3 -#undef IPC_SYNC_MESSAGE_ROUTED3_4 -#undef IPC_SYNC_MESSAGE_ROUTED4_0 -#undef IPC_SYNC_MESSAGE_ROUTED4_1 -#undef IPC_SYNC_MESSAGE_ROUTED4_2 -#undef IPC_SYNC_MESSAGE_ROUTED4_3 -#undef IPC_SYNC_MESSAGE_ROUTED4_4 -#undef IPC_SYNC_MESSAGE_ROUTED5_0 -#undef IPC_SYNC_MESSAGE_ROUTED5_1 -#undef IPC_SYNC_MESSAGE_ROUTED5_2 -#undef IPC_SYNC_MESSAGE_ROUTED5_3 -#undef IPC_SYNC_MESSAGE_ROUTED5_4 +#undef IPC_MESSAGE_DECL #define IPC_STRUCT_BEGIN(struct_name) #define IPC_STRUCT_MEMBER(type, name) @@ -95,75 +24,6 @@ #define IPC_STRUCT_TRAITS_PARENT(type) #define IPC_STRUCT_TRAITS_END() #define IPC_ENUM_TRAITS(enum_name) -#define IPC_MESSAGE_CONTROL0(msg_class) -#define IPC_MESSAGE_CONTROL1(msg_class, type1) -#define IPC_MESSAGE_CONTROL2(msg_class, type1, type2) -#define IPC_MESSAGE_CONTROL3(msg_class, type1, type2, type3) -#define IPC_MESSAGE_CONTROL4(msg_class, type1, type2, type3, type4) -#define IPC_MESSAGE_CONTROL5(msg_class, type1, type2, type3, type4, type5) -#define IPC_MESSAGE_ROUTED0(msg_class) -#define IPC_MESSAGE_ROUTED1(msg_class, type1) -#define IPC_MESSAGE_ROUTED2(msg_class, type1, type2) -#define IPC_MESSAGE_ROUTED3(msg_class, type1, type2, type3) -#define IPC_MESSAGE_ROUTED4(msg_class, type1, type2, type3, type4) -#define IPC_MESSAGE_ROUTED5(msg_class, type1, type2, type3, type4, type5) -#define IPC_SYNC_MESSAGE_CONTROL0_0(msg_class) -#define IPC_SYNC_MESSAGE_CONTROL0_1(msg_class, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL0_2(msg_class, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL0_3(msg_class, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL0_4(msg_class, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_CONTROL1_0(msg_class, type1_in) -#define IPC_SYNC_MESSAGE_CONTROL1_1(msg_class, type1_in, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL1_2(msg_class, type1_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL1_3(msg_class, type1_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL1_4(msg_class, type1_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_CONTROL2_0(msg_class, type1_in, type2_in) -#define IPC_SYNC_MESSAGE_CONTROL2_1(msg_class, type1_in, type2_in, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL2_2(msg_class, type1_in, type2_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL2_3(msg_class, type1_in, type2_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL2_4(msg_class, type1_in, type2_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_CONTROL3_0(msg_class, type1_in, type2_in, type3_in) -#define IPC_SYNC_MESSAGE_CONTROL3_1(msg_class, type1_in, type2_in, type3_in, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL3_2(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL3_3(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL3_4(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_CONTROL4_0(msg_class, type1_in, type2_in, type3_in, type4_in) -#define IPC_SYNC_MESSAGE_CONTROL4_1(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL4_2(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL4_3(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL4_4(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_CONTROL5_0(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in) -#define IPC_SYNC_MESSAGE_CONTROL5_1(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out) -#define IPC_SYNC_MESSAGE_CONTROL5_2(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_CONTROL5_3(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_CONTROL5_4(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED0_0(msg_class) -#define IPC_SYNC_MESSAGE_ROUTED0_1(msg_class, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED0_2(msg_class, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED0_3(msg_class, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED0_4(msg_class, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED1_0(msg_class, type1_in) -#define IPC_SYNC_MESSAGE_ROUTED1_1(msg_class, type1_in, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED1_2(msg_class, type1_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED1_3(msg_class, type1_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED1_4(msg_class, type1_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED2_0(msg_class, type1_in, type2_in) -#define IPC_SYNC_MESSAGE_ROUTED2_1(msg_class, type1_in, type2_in, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED2_2(msg_class, type1_in, type2_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED2_3(msg_class, type1_in, type2_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED2_4(msg_class, type1_in, type2_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED3_0(msg_class, type1_in, type2_in, type3_in) -#define IPC_SYNC_MESSAGE_ROUTED3_1(msg_class, type1_in, type2_in, type3_in, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED3_2(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED3_3(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED3_4(msg_class, type1_in, type2_in, type3_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED4_0(msg_class, type1_in, type2_in, type3_in, type4_in) -#define IPC_SYNC_MESSAGE_ROUTED4_1(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED4_2(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED4_3(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED4_4(msg_class, type1_in, type2_in, type3_in, type4_in, type1_out, type2_out, type3_out, type4_out) -#define IPC_SYNC_MESSAGE_ROUTED5_0(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in) -#define IPC_SYNC_MESSAGE_ROUTED5_1(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out) -#define IPC_SYNC_MESSAGE_ROUTED5_2(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out) -#define IPC_SYNC_MESSAGE_ROUTED5_3(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out) -#define IPC_SYNC_MESSAGE_ROUTED5_4(msg_class, type1_in, type2_in, type3_in, type4_in, type5_in, type1_out, type2_out, type3_out, type4_out) +#define IPC_MESSAGE_DECL(sync, kind, msg_class, \ + in_cnt, out_cnt, in_list, out_list) + diff --git a/ipc/param_traits_log_macros.h b/ipc/param_traits_log_macros.h index de2006c..8259a0d 100644 --- a/ipc/param_traits_log_macros.h +++ b/ipc/param_traits_log_macros.h @@ -4,6 +4,7 @@ #ifndef IPC_PARAM_TRAITS_LOG_MACROS_H_ #define IPC_PARAM_TRAITS_LOG_MACROS_H_ +#pragma once #include diff --git a/ipc/param_traits_read_macros.h b/ipc/param_traits_read_macros.h index ffcdf8e..f0b88bc 100644 --- a/ipc/param_traits_read_macros.h +++ b/ipc/param_traits_read_macros.h @@ -4,6 +4,7 @@ #ifndef IPC_PARAM_TRAITS_READ_MACROS_H_ #define IPC_PARAM_TRAITS_READ_MACROS_H_ +#pragma once // Null out all the macros that need nulling. #include "ipc/ipc_message_null_macros.h" diff --git a/ipc/param_traits_write_macros.h b/ipc/param_traits_write_macros.h index 2ac5249..844c385 100644 --- a/ipc/param_traits_write_macros.h +++ b/ipc/param_traits_write_macros.h @@ -4,6 +4,7 @@ #ifndef IPC_PARAM_TRAITS_WRITE_MACROS_H_ #define IPC_PARAM_TRAITS_WRITE_MACROS_H_ +#pragma once // Null out all the macros that need nulling. #include "ipc/ipc_message_null_macros.h" -- cgit v1.1