add FB_SINGLE_ARG macro
authorPhilip Pronin <philipp@fb.com>
Sun, 12 Jan 2014 22:37:26 +0000 (14:37 -0800)
committerJordan DeLong <jdelong@fb.com>
Thu, 16 Jan 2014 19:21:12 +0000 (11:21 -0800)
Test Plan: eyeballed it

@override-unit-failures

Reviewed By: soren@fb.com

FB internal diff: D1125180

folly/Preprocessor.h

index 20fafabf9000369753312a6853fac00a5eb32da9..86b6a35f9b954376396b7cfb567bdb2aac079377 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Facebook, Inc.
+ * Copyright 2014 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 // Support macro for the above
 #define FB_ARG_2_OR_1_IMPL(a, b, ...) b
 
+/**
+ * Helper macro that provides a way to pass argument with commas in it to
+ * some other macro whose syntax doesn't allow using extra parentheses.
+ * Example:
+ *
+ *   #define MACRO(type, name) type name
+ *   MACRO(FB_SINGLE_ARG(std::pair<size_t, size_t>), x);
+ *
+ */
+#define FB_SINGLE_ARG(...) __VA_ARGS__
+
 /**
  * FB_ANONYMOUS_VARIABLE(str) introduces an identifier starting with
  * str and ending with a number that varies with the line.
@@ -66,5 +77,4 @@
  */
 #define FB_STRINGIZE(name) #name
 
-
 #endif // FOLLY_PREPROCESSOR_