From 6ca56e87ce7ddf670af4aaf85348771f90167b37 Mon Sep 17 00:00:00 2001 From: Zhiyao Zhou Date: Tue, 29 Aug 2023 23:27:25 -0700 Subject: [PATCH] Revert D48763820: C++ Cleanup 4/N: Reorganize Log and YGNodePrint Differential Revision: D48763820 Original commit changeset: 7e3ed7354497 Original Phabricator Diff: D48763820 fbshipit-source-id: 1bea996374f14481160aba8f87940c00e229aa69 --- .../NodeToString.cpp => YGNodePrint.cpp} | 41 ++++++++++--------- yoga/{debug/NodeToString.h => YGNodePrint.h} | 2 +- yoga/Yoga.cpp | 30 +++++++------- yoga/debug/Log.h | 30 -------------- yoga/{debug/Log.cpp => log.cpp} | 14 ++++--- yoga/log.h | 32 +++++++++++++++ 6 files changed, 78 insertions(+), 71 deletions(-) rename yoga/{debug/NodeToString.cpp => YGNodePrint.cpp} (90%) rename yoga/{debug/NodeToString.h => YGNodePrint.h} (95%) delete mode 100644 yoga/debug/Log.h rename yoga/{debug/Log.cpp => log.cpp} (83%) create mode 100644 yoga/log.h diff --git a/yoga/debug/NodeToString.cpp b/yoga/YGNodePrint.cpp similarity index 90% rename from yoga/debug/NodeToString.cpp rename to yoga/YGNodePrint.cpp index b3d6986d..d76aa26f 100644 --- a/yoga/debug/NodeToString.cpp +++ b/yoga/YGNodePrint.cpp @@ -11,13 +11,14 @@ #include -#include +#include "YGNodePrint.h" #include #include namespace facebook::yoga { +typedef std::string string; -static void indent(std::string& base, uint32_t level) { +static void indent(string& base, uint32_t level) { for (uint32_t i = 0; i < level; ++i) { base.append(" "); } @@ -28,7 +29,7 @@ static bool areFourValuesEqual(const Style::Edges& four) { YGValueEqual(four[0], four[3]); } -static void appendFormattedString(std::string& str, const char* fmt, ...) { +static void appendFormattedString(string& str, const char* fmt, ...) { va_list args; va_start(args, fmt); va_list argsCopy; @@ -37,13 +38,13 @@ static void appendFormattedString(std::string& str, const char* fmt, ...) { va_end(args); vsnprintf(buf.data(), buf.size(), fmt, argsCopy); va_end(argsCopy); - std::string result = std::string(buf.begin(), buf.end() - 1); + string result = string(buf.begin(), buf.end() - 1); str.append(result); } static void appendFloatOptionalIfDefined( - std::string& base, - const std::string key, + string& base, + const string key, const YGFloatOptional num) { if (!num.isUndefined()) { appendFormattedString(base, "%s: %g; ", key.c_str(), num.unwrap()); @@ -51,14 +52,14 @@ static void appendFloatOptionalIfDefined( } static void appendNumberIfNotUndefined( - std::string& base, - const std::string key, + string& base, + const string key, const YGValue number) { if (number.unit != YGUnitUndefined) { if (number.unit == YGUnitAuto) { base.append(key + ": auto; "); } else { - std::string unit = number.unit == YGUnitPoint ? "px" : "%%"; + string unit = number.unit == YGUnitPoint ? "px" : "%%"; appendFormattedString( base, "%s: %g%s; ", key.c_str(), number.value, unit.c_str()); } @@ -66,8 +67,8 @@ static void appendNumberIfNotUndefined( } static void appendNumberIfNotAuto( - std::string& base, - const std::string& key, + string& base, + const string& key, const YGValue number) { if (number.unit != YGUnitAuto) { appendNumberIfNotUndefined(base, key, number); @@ -75,8 +76,8 @@ static void appendNumberIfNotAuto( } static void appendNumberIfNotZero( - std::string& base, - const std::string& str, + string& base, + const string& str, const YGValue number) { if (number.unit == YGUnitAuto) { base.append(str + ": auto; "); @@ -86,8 +87,8 @@ static void appendNumberIfNotZero( } static void appendEdges( - std::string& base, - const std::string& key, + string& base, + const string& key, const Style::Edges& edges) { if (areFourValuesEqual(edges)) { auto edgeValue = yoga::Node::computeEdgeValueForColumn( @@ -95,15 +96,15 @@ static void appendEdges( appendNumberIfNotZero(base, key, edgeValue); } else { for (int edge = YGEdgeLeft; edge != YGEdgeAll; ++edge) { - std::string str = key + "-" + YGEdgeToString(static_cast(edge)); + string str = key + "-" + YGEdgeToString(static_cast(edge)); appendNumberIfNotZero(base, str, edges[edge]); } } } static void appendEdgeIfNotUndefined( - std::string& base, - const std::string& str, + string& base, + const string& str, const Style::Edges& edges, const YGEdge edge) { // TODO: this doesn't take RTL / YGEdgeStart / YGEdgeEnd into account @@ -115,7 +116,7 @@ static void appendEdgeIfNotUndefined( appendNumberIfNotUndefined(base, str, value); } -void nodeToString( +void YGNodeToString( std::string& str, yoga::Node* node, YGPrintOptions options, @@ -231,7 +232,7 @@ void nodeToString( if (options & YGPrintOptionsChildren && childCount > 0) { for (uint32_t i = 0; i < childCount; i++) { appendFormattedString(str, "\n"); - nodeToString(str, node->getChild(i), options, level + 1); + YGNodeToString(str, node->getChild(i), options, level + 1); } appendFormattedString(str, "\n"); indent(str, level); diff --git a/yoga/debug/NodeToString.h b/yoga/YGNodePrint.h similarity index 95% rename from yoga/debug/NodeToString.h rename to yoga/YGNodePrint.h index c00439b3..b991c41a 100644 --- a/yoga/debug/NodeToString.h +++ b/yoga/YGNodePrint.h @@ -16,7 +16,7 @@ namespace facebook::yoga { -void nodeToString( +void YGNodeToString( std::string& str, yoga::Node* node, YGPrintOptions options, diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index c150be61..eb84c47a 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -13,15 +13,16 @@ #include -#include -#include +#include "log.h" #include #include +#include "YGNodePrint.h" #include #include "event/event.h" using namespace facebook; using namespace facebook::yoga; +using detail::Log; #ifdef ANDROID static int YGAndroidLog( @@ -1004,8 +1005,8 @@ YOGA_EXPORT void YGNodePrint( const YGPrintOptions options) { const auto node = static_cast(nodeRef); std::string str; - yoga::nodeToString(str, node, options, 0); - yoga::log(node, YGLogLevelDebug, nullptr, str.c_str()); + facebook::yoga::YGNodeToString(str, node, options, 0); + Log::log(node, YGLogLevelDebug, nullptr, str.c_str()); } #endif @@ -3938,7 +3939,7 @@ bool YGLayoutNodeInternal( : layoutMarkerData.cachedMeasures) += 1; if (gPrintChanges && gPrintSkips) { - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -3946,7 +3947,7 @@ bool YGLayoutNodeInternal( YGSpacer(depth), depth); node->print(layoutContext); - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -3961,7 +3962,7 @@ bool YGLayoutNodeInternal( } } else { if (gPrintChanges) { - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -3970,7 +3971,7 @@ bool YGLayoutNodeInternal( depth, needToVisitNode ? "*" : ""); node->print(layoutContext); - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -4000,7 +4001,7 @@ bool YGLayoutNodeInternal( reason); if (gPrintChanges) { - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -4009,7 +4010,7 @@ bool YGLayoutNodeInternal( depth, needToVisitNode ? "*" : ""); node->print(layoutContext); - yoga::log( + Log::log( node, YGLogLevelVerbose, nullptr, @@ -4031,8 +4032,7 @@ bool YGLayoutNodeInternal( } if (layout->nextCachedMeasurementsIndex == YG_MAX_CACHED_RESULT_COUNT) { if (gPrintChanges) { - yoga::log( - node, YGLogLevelVerbose, nullptr, "Out of cache entries!\n"); + Log::log(node, YGLogLevelVerbose, nullptr, "Out of cache entries!\n"); } layout->nextCachedMeasurementsIndex = 0; } @@ -4290,7 +4290,7 @@ YOGA_EXPORT void YGConfigSetLogger(const YGConfigRef config, YGLogger logger) { void YGAssert(const bool condition, const char* message) { if (!condition) { - yoga::log( + Log::log( static_cast(nullptr), YGLogLevelFatal, nullptr, @@ -4305,7 +4305,7 @@ void YGAssertWithNode( const bool condition, const char* message) { if (!condition) { - yoga::log( + Log::log( static_cast(node), YGLogLevelFatal, nullptr, @@ -4320,7 +4320,7 @@ void YGAssertWithConfig( const bool condition, const char* message) { if (!condition) { - yoga::log( + Log::log( static_cast(config), YGLogLevelFatal, nullptr, diff --git a/yoga/debug/Log.h b/yoga/debug/Log.h deleted file mode 100644 index dd4db2f4..00000000 --- a/yoga/debug/Log.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#pragma once - -#include -#include -#include - -namespace facebook::yoga { - -void log( - yoga::Node* node, - YGLogLevel level, - void*, - const char* message, - ...) noexcept; - -void log( - yoga::Config* config, - YGLogLevel level, - void*, - const char* format, - ...) noexcept; - -} // namespace facebook::yoga diff --git a/yoga/debug/Log.cpp b/yoga/log.cpp similarity index 83% rename from yoga/debug/Log.cpp rename to yoga/log.cpp index f3d704aa..3dc62c51 100644 --- a/yoga/debug/Log.cpp +++ b/yoga/log.cpp @@ -5,9 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -#include +#include -namespace facebook::yoga { +#include "log.h" +#include +#include + +namespace facebook::yoga::detail { namespace { @@ -25,7 +29,7 @@ void vlog( } } // namespace -void log( +YOGA_EXPORT void Log::log( yoga::Node* node, YGLogLevel level, void* context, @@ -43,7 +47,7 @@ void log( va_end(args); } -void log( +void Log::log( yoga::Config* config, YGLogLevel level, void* context, @@ -55,4 +59,4 @@ void log( va_end(args); } -} // namespace facebook::yoga +} // namespace facebook::yoga::detail diff --git a/yoga/log.h b/yoga/log.h new file mode 100644 index 00000000..3d468ae1 --- /dev/null +++ b/yoga/log.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include + +namespace facebook::yoga::detail { + +struct Log { + static void log( + yoga::Node* node, + YGLogLevel level, + void*, + const char* message, + ...) noexcept; + + static void log( + yoga::Config* config, + YGLogLevel level, + void*, + const char* format, + ...) noexcept; +}; + +} // namespace facebook::yoga::detail