From bfc69fd326bd823c454c9fffa62748650a1a81dd Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 7 Jul 2025 08:59:41 -0400 Subject: bfs.h: New BFS_VA_IF(A)(B)(C) macro --- src/bfs.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/bfs.h b/src/bfs.h index d88f49f..078feed 100644 --- a/src/bfs.h +++ b/src/bfs.h @@ -58,6 +58,25 @@ extern const char bfs_ldlibs[]; // Fundamental utilities +/** + * A preprocessor conditional. + * + * BFS_VA_IF(A)(B)(C) => B + * BFS_VA_IF( )(B)(C) => C + */ +#define BFS_VA_IF(...) BFS_VA_IF_AB ## __VA_OPT__(C) +// BFS_VA_IF(A)(B)(C) => BFS_VA_IF_ABC(B)(C) +// BFS_VA_IF( )(B)(C) => BFS_VA_IF_AB(B)(C) + +#define BFS_VA_IF_ABC(...) __VA_ARGS__ BFS_VA_IGNORE +// BFS_VA_IF_ABC(B)(C) => B BFS_VA_IGNORE(C) + +#define BFS_VA_IF_AB(...) BFS_VA_REPEAT +// BFS_VA_IF_AB(B)(C) => BFS_VA_REPEAT(C) + +#define BFS_VA_IGNORE(...) +#define BFS_VA_REPEAT(...) __VA_ARGS__ + /** * False sharing/destructive interference/largest cache line size. */ -- cgit v1.2.3