Cleanup: move variadic defines to their own header
authorCampbell Barton <ideasman42@gmail.com>
Wed, 23 Aug 2017 10:00:48 +0000 (20:00 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 23 Aug 2017 10:16:17 +0000 (20:16 +1000)
So we can use in headers without pulling in many other defines.

source/blender/blenlib/BLI_string_utils.h
source/blender/blenlib/BLI_utildefines.h
source/blender/blenlib/BLI_variadic_defines.h [new file with mode: 0644]
source/blender/blenlib/CMakeLists.txt
source/blender/python/generic/py_capi_utils.h

index a9fec5a1297b99c4c971fb90b5dd334924d3c633..e913ec3a15bcf12f1b793647ecd95a87a7b1efab 100644 (file)
@@ -39,7 +39,7 @@ extern "C" {
 #endif
 
 #include "BLI_compiler_attrs.h"
-#include "BLI_utildefines.h"  /* only for _VA_NARGS_COUNT */
+#include "BLI_variadic_defines.h"
 
 struct ListBase;
 
index 746eb922c65efb00c0ac1229c2a2768745479461..ae2f948a2842e81a6b38ba35a514c9b1fbbbfaa7 100644 (file)
@@ -39,35 +39,12 @@ extern "C" {
 /* avoid many includes for now */
 #include "BLI_sys_types.h"
 #include "BLI_compiler_compat.h"
+#include "BLI_variadic_defines.h"
 
 #ifndef NDEBUG /* for BLI_assert */
 #include <stdio.h>
 #endif
 
-
-/* varargs macros (keep first so others can use) */
-/* --- internal helpers --- */
-#define _VA_NARGS_GLUE(x, y) x y
-#define _VA_NARGS_RETURN_COUNT(\
-       _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_, _41_, _42_, _43_, _44_, _45_, _46_, _47_, _48_, \
-       _49_, _50_, _51_, _52_, _53_, _54_, _55_, _56_, _57_, _58_, _59_, _60_, _61_, _62_, _63_, _64_, \
-       count, ...) count
-#define _VA_NARGS_EXPAND(args) _VA_NARGS_RETURN_COUNT args
-/* 64 args max */
-#define _VA_NARGS_COUNT(...) _VA_NARGS_EXPAND((__VA_ARGS__, \
-       64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, \
-       48, 47, 46, 45, 44, 43, 42, 41, 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))
-#define _VA_NARGS_OVERLOAD_MACRO2(name, count) name##count
-#define _VA_NARGS_OVERLOAD_MACRO1(name, count) _VA_NARGS_OVERLOAD_MACRO2(name, count)
-#define _VA_NARGS_OVERLOAD_MACRO(name,  count) _VA_NARGS_OVERLOAD_MACRO1(name, count)
-/* --- expose for re-use --- */
-#define VA_NARGS_CALL_OVERLOAD(name, ...) \
-       _VA_NARGS_GLUE(_VA_NARGS_OVERLOAD_MACRO(name, _VA_NARGS_COUNT(__VA_ARGS__)), (__VA_ARGS__))
-
 /* useful for finding bad use of min/max */
 #if 0
 /* gcc only */
diff --git a/source/blender/blenlib/BLI_variadic_defines.h b/source/blender/blenlib/BLI_variadic_defines.h
new file mode 100644 (file)
index 0000000..df26f42
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __BLI_VARIADIC_DEFINES_H__
+#define __BLI_VARIADIC_DEFINES_H__
+
+/** \file BLI_variadic_defines.h
+ *  \ingroup bli
+ */
+
+/* --- internal helpers --- */
+#define _VA_NARGS_GLUE(x, y) x y
+#define _VA_NARGS_RETURN_COUNT(\
+       _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_, _41_, _42_, _43_, _44_, _45_, _46_, _47_, _48_, \
+       _49_, _50_, _51_, _52_, _53_, _54_, _55_, _56_, _57_, _58_, _59_, _60_, _61_, _62_, _63_, _64_, \
+       count, ...) count
+#define _VA_NARGS_EXPAND(args) _VA_NARGS_RETURN_COUNT args
+#define _VA_NARGS_OVERLOAD_MACRO2(name, count) name##count
+#define _VA_NARGS_OVERLOAD_MACRO1(name, count) _VA_NARGS_OVERLOAD_MACRO2(name, count)
+#define _VA_NARGS_OVERLOAD_MACRO(name,  count) _VA_NARGS_OVERLOAD_MACRO1(name, count)
+/* --- expose for re-use --- */
+/* 64 args max */
+#define _VA_NARGS_COUNT(...) _VA_NARGS_EXPAND((__VA_ARGS__, \
+       64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, \
+       48, 47, 46, 45, 44, 43, 42, 41, 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))
+#define VA_NARGS_CALL_OVERLOAD(name, ...) \
+       _VA_NARGS_GLUE(_VA_NARGS_OVERLOAD_MACRO(name, _VA_NARGS_COUNT(__VA_ARGS__)), (__VA_ARGS__))
+
+#endif  /* __BLI_VARIADIC_DEFINES_H__ */
index fcb02a86a842c765ed31972b436dd45d5a08faac..f42848eec8f4bca68879d6996e38ae113ab259af 100644 (file)
@@ -205,6 +205,7 @@ set(SRC
        BLI_timecode.h
        BLI_utildefines.h
        BLI_uvproject.h
+       BLI_variadic_defines.h
        BLI_vfontdata.h
        BLI_voronoi.h
        BLI_voxel.h
index 95d3f1d3775fd1c340e0a98ba71bc8ecc87bb275..bdfbbb75653199a34c1d637bf3d77ab380e2cb01 100644 (file)
@@ -28,7 +28,7 @@
 #define __PY_CAPI_UTILS_H__
 
 #include "BLI_sys_types.h"
-#include "BLI_utildefines.h"  /* only for _VA_NARGS_COUNT */
+#include "BLI_variadic_defines.h"
 
 void                   PyC_ObSpit(const char *name, PyObject *var);
 void                   PyC_LineSpit(void);