@@@ mostly bench docs
[mLib] / utils / macros.h
index bc83629..5b77225 100644 (file)
 #define MLIB__STR(x) #x
 #define STR(x) MLIB__STR(x)
 
-/* --- @GLUE@ --- *
+/* --- @GLUE@, @GLUE3@ --- *
  *
  * Arguments:  @x, y@ = two sequences of tokens
+ *             @z@ = a third sequence of tokens
  *
  * Returns:    A single token formed by gluing together the macro-expansions
- *             of @x@ and @y@.
+ *             of @x@ and @y@, and @z@ for @GLUE3@.
  */
 
 #define MLIB__GLUE(x, y) x##y
 #define GLUE(x, y) MLIB__GLUE(x, y)
+#define GLUE3(x, y, z) GLUE(x, MLIB__GLUE(y, z))
 
 /* --- @STATIC_ASSERT@ --- *
  *
 #define UNQUALIFY(type, p)                                             \
        CONVERT_CAREFULLY(type *, const volatile type *, p)
 
+/* --- @EMPTY@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    The empty token sequence.
+ */
+
+#define EMPTY
+
 /* --- @COMMA@ --- *
  *
  * Arguments:  ---