From cabc9d1ab3097ece64130e2d7c2b83480cd5ea65 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Thu, 4 Apr 2019 12:32:41 -0700 Subject: [PATCH] Fabric: `toString` methods were moved into `DebugStringConvertible` with an implementation in .cpp file Summary: They need to be in DebugStringConvertible because it depends on they (and because `debugStringConvertibleUtils` depends on `DebugStringConvertible`). We also moved they implementation to cpp file to avoid leaking Folly's features to consumer namespace. Reviewed By: mdvacca Differential Revision: D14715080 fbshipit-source-id: 7277e17b39a14a2d7ba7e5a9b44a70178feb1045 --- .../fabric/debug/DebugStringConvertible.cpp | 25 +++++++++++++++++++ .../fabric/debug/DebugStringConvertible.h | 14 +++++++++++ .../debug/debugStringConvertibleUtils.h | 18 ------------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/ReactCommon/fabric/debug/DebugStringConvertible.cpp b/ReactCommon/fabric/debug/DebugStringConvertible.cpp index eab3557a0..59ce2e6c0 100644 --- a/ReactCommon/fabric/debug/DebugStringConvertible.cpp +++ b/ReactCommon/fabric/debug/DebugStringConvertible.cpp @@ -7,6 +7,9 @@ #include "DebugStringConvertible.h" +#include +#include + namespace facebook { namespace react { @@ -107,6 +110,28 @@ SharedDebugStringConvertibleList DebugStringConvertible::getDebugProps() const { return SharedDebugStringConvertibleList(); } +/* + * `toString`-family implementation. + */ +std::string toString(std::string const &value) { + return value; +} +std::string toString(int const &value) { + return folly::to(value); +} +std::string toString(bool const &value) { + return folly::to(value); +} +std::string toString(float const &value) { + return folly::to(value); +} +std::string toString(double const &value) { + return folly::to(value); +} +std::string toString(void const *value) { + return folly::sformat("0x{0:016x}", reinterpret_cast(value)); +} + #endif } // namespace react diff --git a/ReactCommon/fabric/debug/DebugStringConvertible.h b/ReactCommon/fabric/debug/DebugStringConvertible.h index e03ec6f60..f18926057 100644 --- a/ReactCommon/fabric/debug/DebugStringConvertible.h +++ b/ReactCommon/fabric/debug/DebugStringConvertible.h @@ -80,5 +80,19 @@ class DebugStringConvertible {}; #endif +#if RN_DEBUG_STRING_CONVERTIBLE + +/* + * Set of particular-format-opinionated functions that convert base types to `std::string`; practically incapsulate `folly:to<>` and `folly::format`. + */ +std::string toString(std::string const &value); +std::string toString(int const &value); +std::string toString(bool const &value); +std::string toString(float const &value); +std::string toString(double const &value); +std::string toString(void const *value); + +#endif + } // namespace react } // namespace facebook diff --git a/ReactCommon/fabric/debug/debugStringConvertibleUtils.h b/ReactCommon/fabric/debug/debugStringConvertibleUtils.h index 51bf698b4..cf5fb18cb 100644 --- a/ReactCommon/fabric/debug/debugStringConvertibleUtils.h +++ b/ReactCommon/fabric/debug/debugStringConvertibleUtils.h @@ -12,8 +12,6 @@ #include #include -#include -#include #include #include @@ -22,22 +20,6 @@ namespace react { #if RN_DEBUG_STRING_CONVERTIBLE -inline std::string toString(const std::string &value) { - return value; -} -inline std::string toString(const int &value) { - return folly::to(value); -} -inline std::string toString(const bool &value) { - return folly::to(value); -} -inline std::string toString(const float &value) { - return folly::to(value); -} -inline std::string toString(const double &value) { - return folly::to(value); -} - template inline SharedDebugStringConvertible debugStringConvertibleItem(std::string name, T value, T defaultValue = {}) {