base: CONCAT macros for token merge
authorMarko Kreen <markokr@gmail.com>
Thu, 5 Apr 2012 13:35:46 +0000 (16:35 +0300)
committerMarko Kreen <markokr@gmail.com>
Thu, 5 Apr 2012 13:35:46 +0000 (16:35 +0300)
usual/base.h

index 8fa652d46c3f8ae1b3896b0daec566e8bdb28183..1941ef180efffa78519a27dca5a6a91e26c2f48d 100644 (file)
 #define FLEX_ARRAY 1
 #endif
 
+/** Make string token from C expression */
+#define STR(x) _STR_(x)
+#define _STR_(x) #x
+
+/** Make single C token from 2 separate tokens */
+#define CONCAT(a, b)    _CONCAT_(a, b)
+#define _CONCAT_(a, b)  a ## b
+
+/** Make single C token from 3 separate tokens */
+#define CONCAT3(a, b, c)     _CONCAT3_(a, b, c)
+#define _CONCAT3_(a, b, c)  a ## b ## c
+
+/** Make single C token from 4 separate tokens */
+#define CONCAT4(a, b, c, d)    _CONCAT4_(a, b, c, d)
+#define _CONCAT4_(a, b, c, d)  a ## b ## c ## d
+
 /**
  * @name Compiler attributes.
  */
@@ -185,9 +201,5 @@ static inline void *zmalloc(size_t len)
 int posix_memalign(void **ptr_p, size_t align, size_t len);
 #endif
 
-/** cpp expr -> string */
-#define STR(x) _STR_(x)
-#define _STR_(x) #x
-
 #endif