Remove dependency on std::to_string
authorSean Cannella <seanc@fb.com>
Thu, 18 Sep 2014 14:20:04 +0000 (07:20 -0700)
committerDave Watson <davejwatson@fb.com>
Thu, 18 Sep 2014 16:44:59 +0000 (09:44 -0700)
Summary:
Mobile platform clang doesn't currently support std::to_string
so remove folly's dependency on it.

Test Plan: existing tests

Reviewed By: mpawlowski@fb.com

Subscribers: kmdent, fma, benyluo, shikong, ranjeeth, subodh, pgriess, njormrod

FB internal diff: D1562179

Tasks: 5183325

folly/Conv.h
folly/IPAddress.h

index 76b9385cfe6c242872c21168c9b0a533abdd9de9..798c27323c2e2b87f2528ff677e570149eda3989 100644 (file)
 // V8 JavaScript implementation
 #include <double-conversion/double-conversion.h>
 
-#define FOLLY_RANGE_CHECK(condition, message)                           \
-  ((condition) ? (void)0 : throw std::range_error(                      \
-    (__FILE__ "(" + std::to_string((long long int) __LINE__) + "): "    \
+#define FOLLY_RANGE_CHECK_STRINGIZE(x) #x
+#define FOLLY_RANGE_CHECK_STRINGIZE2(x) FOLLY_RANGE_CHECK_STRINGIZE(x)
+
+#define FOLLY_RANGE_CHECK(condition, message)                               \
+  ((condition) ? (void)0 : throw std::range_error(                          \
+    (std::string(__FILE__ "(" FOLLY_RANGE_CHECK_STRINGIZE2(__LINE__) "): ") \
      + (message)).c_str()))
 
 namespace folly {
@@ -1407,6 +1410,8 @@ to(const Src & value) {
 // to avoid defining this global macro name in other files that include Conv.h.
 #ifndef FOLLY_CONV_INTERNAL
 #undef FOLLY_RANGE_CHECK
+#undef FOLLY_RANGE_CHECK_STRINGIZE2
+#undef FOLLY_RANGE_CHECK_STRINGIZE
 #endif
 
 #endif /* FOLLY_BASE_CONV_H_ */
index 7820fa47bd7d7029c5565e6d46838a1e813be45c..b1c474a602b273da339be1709af5bf6c297dd631 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <boost/operators.hpp>
 
+#include <folly/Conv.h>
 #include <folly/Format.h>
 #include <folly/Range.h>
 #include <folly/IPAddressException.h>
@@ -98,7 +99,7 @@ class IPAddress : boost::totally_ordered<IPAddress> {
    * @return string representing the netblock
    */
   static std::string networkToString(const CIDRNetwork& network) {
-    return network.first.str() + "/" + std::to_string(network.second);
+    return network.first.str() + "/" + folly::to<std::string>(network.second);
   }
 
   /**