summaryrefslogtreecommitdiffstats
path: root/src/include/util
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-04-08 14:45:30 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-04-18 09:13:58 -0500
commitd463911fd7122d75306f6ea9c042d96e1c3597c6 (patch)
treed96e1844d4644defb8233ddcc756fa00b23bd186 /src/include/util
parent79f790c2b9d6a368f61a99af07d04ed9348ca504 (diff)
downloadtalos-hostboot-d463911fd7122d75306f6ea9c042d96e1c3597c6.tar.gz
talos-hostboot-d463911fd7122d75306f6ea9c042d96e1c3597c6.zip
Add 'SUPPRESS_UNUSED_VARIABLE' macro to avoid compiler warnings.
Change-Id: Ic34fa1e141c1d75ea67933c02366016c732ac0c2 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4038 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/util')
-rw-r--r--src/include/util/pp/for_each.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/src/include/util/pp/for_each.h b/src/include/util/pp/for_each.h
new file mode 100644
index 000000000..ed8c883a0
--- /dev/null
+++ b/src/include/util/pp/for_each.h
@@ -0,0 +1,159 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/util/pp/for_each.h $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __UTIL_PP_FOR_EACH_H
+#define __UTIL_PP_FOR_EACH_H
+
+/** @file for_each.h
+ *
+ * Macros to support a for-each preprocessor directive.
+ *
+ * Ex. PREPROCESSOR_FOR_EACH( foo, a, b, c, 1, 2, 3) would expand to:
+ * foo(a); foo(b); foo(c); foo(1); foo(2); foo(3)
+ */
+
+
+// Recursive macros to expand the Nth parameter.
+#define PREPROCESSOR_FOR_EACH_0(WHAT)
+#define PREPROCESSOR_FOR_EACH_1(WHAT, VAL) WHAT(VAL)
+#define PREPROCESSOR_FOR_EACH_2(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_1(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_3(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_2(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_4(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_3(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_5(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_4(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_6(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_5(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_7(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_6(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_8(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_7(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_9(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_8(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_10(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_9(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_11(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_10(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_12(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_11(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_13(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_12(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_14(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_13(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_15(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_14(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_16(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_15(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_17(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_16(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_18(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_17(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_19(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_18(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_20(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_19(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_21(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_20(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_22(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_21(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_23(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_22(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_24(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_23(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_25(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_24(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_26(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_25(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_27(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_26(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_28(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_27(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_29(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_28(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_30(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_29(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_31(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_30(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_32(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_31(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_33(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_32(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_34(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_33(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_35(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_34(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_36(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_35(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_37(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_36(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_38(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_37(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_39(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_38(WHAT, __VA_ARGS__)
+#define PREPROCESSOR_FOR_EACH_40(WHAT, VAL, ...) \
+ WHAT(VAL); PREPROCESSOR_FOR_EACH_39(WHAT, __VA_ARGS__)
+
+/** A list of _N tags in reversed order.
+ *
+ * This is used to count the number of va-arg parameters to the for-each.
+ */
+#define PREPROCESSOR_REVERSE_LIST_40 \
+ _40, _39, _38, _37, _36, _35, _34, _33, _32, _31, \
+ _30, _29, _28, _27, _26, _25, _24, _23, _22, _21, \
+ _20, _19, _18, _17, _16, _15, _14, _13, _12, _11, \
+ _10, _9, _8, _7, _6, _5, _4, _3, _2, _1, _0
+
+/** Count the number of va_arg macros.
+ *
+ * Returns a tag from PREPROCESSOR_REVERSE_LIST_40, like _10, based on how
+ * many va-args there are.
+ */
+#define PREPROCESSOR_COUNT_N_(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \
+ _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \
+ _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
+ _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
+ WHICH, ...) WHICH
+/** Preprocessor redirection to PREPROCESSOR_COUNT_N_ */
+#define PREPROCESSOR_COUNT_N(...) PREPROCESSOR_COUNT_N_(__VA_ARGS__)
+
+/** Concatenates two keywords together to make a preprocessor tag */
+#define PREPROCESSOR_FOR_EACH_CAT(FN, COUNT) FN ## COUNT
+
+/* Preprocessor redirection to the proper FOR_EACH_N macro. */
+#define PREPROCESSOR_FOR_EACH_(FN, COUNT, WHAT, ...) \
+ PREPROCESSOR_FOR_EACH_CAT(FN, COUNT)(WHAT,##__VA_ARGS__)
+
+/** Perform a preprocessor for-each operation.
+ *
+ * @param WHAT - Action to perform on each variable.
+ * @param ... - Variable arguments to perform actions on.
+ *
+ */
+#define PREPROCESSOR_FOR_EACH(WHAT, ...) \
+ PREPROCESSOR_FOR_EACH_(PREPROCESSOR_FOR_EACH, \
+ PREPROCESSOR_COUNT_N(0, ##__VA_ARGS__ , \
+ PREPROCESSOR_REVERSE_LIST_40), \
+ WHAT,##__VA_ARGS__)
+
+#endif
OpenPOWER on IntegriCloud