Move ValueToString out to its own header file to remove duplication
authorbjonesbe@adobe.com <bjonesbe@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Nov 2013 00:31:31 +0000 (00:31 +0000)
committerbjonesbe@adobe.com <bjonesbe@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Nov 2013 00:31:31 +0000 (00:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=124237

Reviewed by Alexandru Chiculita.

The ValueToString struct is used in many places for debugging. Move it
out to its own header file to remove all the duplicated definitions
and make it possible for the specializations to be placed in the
header files with the implementation of the classes they print.

No new tests, no behavior change.

* GNUmakefile.list.am:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.h:
* platform/LayoutUnit.h:
* platform/PODInterval.h:
* platform/PODIntervalTree.h:
* platform/PODRedBlackTree.h:
* platform/ValueToString.h: Added.
* platform/graphics/FloatPolygon.h:
* rendering/FloatingObjects.cpp:
* rendering/FloatingObjects.h:
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.h:
* rendering/RenderFlowThread.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@159159 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.list.am
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/platform/LayoutUnit.h
Source/WebCore/platform/PODInterval.h
Source/WebCore/platform/PODIntervalTree.h
Source/WebCore/platform/PODRedBlackTree.h
Source/WebCore/platform/ValueToString.h [new file with mode: 0644]
Source/WebCore/platform/graphics/FloatPolygon.h
Source/WebCore/rendering/FloatingObjects.cpp
Source/WebCore/rendering/FloatingObjects.h
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBlockFlow.h
Source/WebCore/rendering/RenderFlowThread.h

index 0cbd870..e3c3b90 100644 (file)
@@ -1,3 +1,32 @@
+2013-11-12  Bem Jones-Bey  <bjonesbe@adobe.com>
+
+        Move ValueToString out to its own header file to remove duplication
+        https://bugs.webkit.org/show_bug.cgi?id=124237
+
+        Reviewed by Alexandru Chiculita.
+
+        The ValueToString struct is used in many places for debugging. Move it
+        out to its own header file to remove all the duplicated definitions
+        and make it possible for the specializations to be placed in the
+        header files with the implementation of the classes they print.
+
+        No new tests, no behavior change.
+
+        * GNUmakefile.list.am:
+        * WebCore.xcodeproj/project.pbxproj:
+        * html/HTMLMediaElement.h:
+        * platform/LayoutUnit.h:
+        * platform/PODInterval.h:
+        * platform/PODIntervalTree.h:
+        * platform/PODRedBlackTree.h:
+        * platform/ValueToString.h: Added.
+        * platform/graphics/FloatPolygon.h:
+        * rendering/FloatingObjects.cpp:
+        * rendering/FloatingObjects.h:
+        * rendering/RenderBlock.h:
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderFlowThread.h:
+
 2013-11-11  David Hyatt  <hyatt@apple.com>
 
         Make RenderBlockRareData be in a hashtable instead of being a member variable.
index b1db929..8405624 100644 (file)
@@ -6059,6 +6059,7 @@ platform_sources += \
        Source/WebCore/platform/TreeShared.h \
        Source/WebCore/platform/UUID.cpp \
        Source/WebCore/platform/UUID.h \
+       Source/WebCore/platform/ValueToString.h \
        Source/WebCore/platform/VisitedLinkStrategy.h \
        Source/WebCore/platform/Widget.cpp \
        Source/WebCore/platform/Widget.h \
index 7b82380..6cc8979 100644 (file)
                98CE4326129E00BD005821DC /* LinkLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98CE4325129E00BD005821DC /* LinkLoader.cpp */; };
                98CE432A129E00E5005821DC /* LinkLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 98CE4329129E00E5005821DC /* LinkLoader.h */; };
                98EB1F951313FE0500D0E1EA /* NotImplemented.h in Headers */ = {isa = PBXBuildFile; fileRef = 98EB1F941313FE0500D0E1EA /* NotImplemented.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               9A1142041832D135000BB8AD /* ValueToString.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1142031832D134000BB8AD /* ValueToString.h */; settings = {ATTRIBUTES = (Private, ); }; };
                9A1B6F97158869C80011A8C4 /* JSDOMStringListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B6F96158869C80011A8C4 /* JSDOMStringListCustom.cpp */; };
                9A528E8317D7F52F00AA9518 /* FloatingObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A528E8117D7F52F00AA9518 /* FloatingObjects.cpp */; };
                9A528E8417D7F52F00AA9518 /* FloatingObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A528E8217D7F52F00AA9518 /* FloatingObjects.h */; settings = {ATTRIBUTES = (Private, ); }; };
                98CE4325129E00BD005821DC /* LinkLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkLoader.cpp; sourceTree = "<group>"; };
                98CE4329129E00E5005821DC /* LinkLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkLoader.h; sourceTree = "<group>"; };
                98EB1F941313FE0500D0E1EA /* NotImplemented.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotImplemented.h; sourceTree = "<group>"; };
+               9A1142031832D134000BB8AD /* ValueToString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueToString.h; sourceTree = "<group>"; };
                9A1B6F96158869C80011A8C4 /* JSDOMStringListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMStringListCustom.cpp; sourceTree = "<group>"; };
                9A528E8117D7F52F00AA9518 /* FloatingObjects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatingObjects.cpp; sourceTree = "<group>"; };
                9A528E8217D7F52F00AA9518 /* FloatingObjects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatingObjects.h; sourceTree = "<group>"; };
                                BCBD21AA0E417AD400A070F2 /* URLHash.h */,
                                2E3BBF051162DA1100B9409A /* UUID.cpp */,
                                2E3BBF061162DA1100B9409A /* UUID.h */,
+                               9A1142031832D134000BB8AD /* ValueToString.h */,
                                515788C01207852C00A37C4A /* VisitedLinkStrategy.h */,
                                9380F47109A11AB4001FDB34 /* Widget.cpp */,
                                9380F47209A11AB4001FDB34 /* Widget.h */,
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               9A1142041832D135000BB8AD /* ValueToString.h in Headers */,
                                932AD70617EFA2C40038F8FF /* MainFrame.h in Headers */,
                                FEDBFF16182B7A8D0017FA64 /* BreakpointID.h in Headers */,
                                FE115FAB167988CD00249134 /* AbstractDatabaseServer.h in Headers */,
index 219321e..4c4a06f 100644 (file)
@@ -799,15 +799,7 @@ private:
 
 #if ENABLE(VIDEO_TRACK)
 #ifndef NDEBUG
-// Template specializations required by PodIntervalTree in debug mode.
-template <>
-struct ValueToString<double> {
-    static String string(const double value)
-    {
-        return String::number(value);
-    }
-};
-
+// Template specialization required by PodIntervalTree in debug mode.
 template <>
 struct ValueToString<TextTrackCue*> {
     static String string(TextTrackCue* const& cue)
index aa909b2..e3e1e1d 100644 (file)
@@ -31,6 +31,7 @@
 #ifndef LayoutUnit_h
 #define LayoutUnit_h
 
+#include "ValueToString.h"
 #include <limits.h>
 #include <limits>
 #include <math.h>
@@ -962,6 +963,14 @@ inline bool isIntegerValue(const LayoutUnit value)
     return value.toInt() == value;
 }
 
+#ifndef NDEBUG
+// This structure is used by PODIntervalTree for debugging.
+template <>
+struct ValueToString<LayoutUnit> {
+    static String string(const LayoutUnit value) { return String::number(value.toFloat()); }
+};
+#endif
+
 } // namespace WebCore
 
 #endif // LayoutUnit_h
index 5c1dcc2..5a28824 100644 (file)
@@ -27,6 +27,7 @@
 #define PODInterval_h
 
 #ifndef NDEBUG
+#include "ValueToString.h"
 #include <wtf/text/StringBuilder.h>
 #endif
 
@@ -70,11 +71,6 @@ namespace WebCore {
 // Note that this class requires a copy constructor and assignment
 // operator in order to be stored in the red-black tree.
 
-#ifndef NDEBUG
-template<class T>
-struct ValueToString;
-#endif
-
 template<class T, class UserData = void*>
 class PODInterval {
 public:
index 264e6df..c8c3383 100644 (file)
 #include "PODArena.h"
 #include "PODInterval.h"
 #include "PODRedBlackTree.h"
+#include "ValueToString.h"
 #include <wtf/Assertions.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-#ifndef NDEBUG
-template<class T>
-struct ValueToString;
-#endif
-
 template <class T, class UserData = void*>
 class PODIntervalSearchAdapter {
 public:
index bd3de02..d5fb911 100644 (file)
@@ -73,6 +73,7 @@
 #define PODRedBlackTree_h
 
 #include "PODFreeListArena.h"
+#include "ValueToString.h"
 #include <wtf/Assertions.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-#ifndef NDEBUG
-template<class T>
-struct ValueToString;
-#endif
-
 enum UninitializedTreeEnum {
     UninitializedTree
 };
diff --git a/Source/WebCore/platform/ValueToString.h b/Source/WebCore/platform/ValueToString.h
new file mode 100644 (file)
index 0000000..06643a1
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef ValueToString_h
+#define ValueToString_h
+
+#ifndef NDEBUG
+
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+template<class T>
+struct ValueToString;
+
+template <>
+struct ValueToString<int> {
+    static String string(const int value) { return String::number(value); }
+};
+
+template <>
+struct ValueToString<float> {
+    static String string(const float value) { return String::number(value); }
+};
+
+template <>
+struct ValueToString<double> {
+    static String string(const double value) { return String::number(value); }
+};
+
+};
+
+#endif
+
+#endif
+
index 67e0916..288dabd 100644 (file)
@@ -33,6 +33,7 @@
 #include "FloatPoint.h"
 #include "FloatRect.h"
 #include "PODIntervalTree.h"
+#include "ValueToString.h"
 #include "WindRule.h"
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
@@ -42,11 +43,6 @@ namespace WebCore {
 
 class FloatPolygonEdge;
 
-// This class is used by PODIntervalTree for debugging.
-#ifndef NDEBUG
-template <class> struct ValueToString;
-#endif
-
 class FloatPolygon {
 public:
     FloatPolygon(PassOwnPtr<Vector<FloatPoint>> vertices, WindRule fillRule);
@@ -137,12 +133,8 @@ private:
     const FloatPolygon* m_polygon;
 };
 
-// These structures are used by PODIntervalTree for debugging.
+// This structure is used by PODIntervalTree for debugging.
 #ifndef NDEBUG
-template <> struct ValueToString<float> {
-    static String string(const float value) { return String::number(value); }
-};
-
 template<> struct ValueToString<FloatPolygonEdge*> {
     static String string(const FloatPolygonEdge* edge) { return String::format("%p (%f,%f %f,%f)", edge, edge->vertex1().x(), edge->vertex1().y(), edge->vertex2().x(), edge->vertex2().y()); }
 };
index e0f6abc..60e1910 100644 (file)
@@ -473,18 +473,4 @@ LayoutUnit ComputeFloatOffsetAdapter<FloatTypeValue>::heightRemaining() const
     return m_outermostFloat ? m_renderer.logicalBottomForFloat(m_outermostFloat) - m_lineTop : LayoutUnit(1);
 }
 
-#ifndef NDEBUG
-// These helpers are only used by the PODIntervalTree for debugging purposes.
-String ValueToString<int>::string(const int value)
-{
-    return String::number(value);
-}
-
-String ValueToString<FloatingObject*>::string(const FloatingObject* floatingObject)
-{
-    return String::format("%p (%ix%i %ix%i)", floatingObject, floatingObject->frameRect().x().toInt(), floatingObject->frameRect().y().toInt(), floatingObject->frameRect().maxX().toInt(), floatingObject->frameRect().maxY().toInt());
-}
-#endif
-
-
 } // namespace WebCore
index 628940f..d451dba 100644 (file)
@@ -165,12 +165,12 @@ private:
 };
 
 #ifndef NDEBUG
-// These structures are used by PODIntervalTree for debugging purposes.
-template <> struct ValueToString<int> {
-    static String string(const int value);
-};
+// This helper is used by PODIntervalTree for debugging purposes.
 template<> struct ValueToString<FloatingObject*> {
-    static String string(const FloatingObject*);
+    static String string(const FloatingObject* floatingObject)
+    {
+        return String::format("%p (%ix%i %ix%i)", floatingObject, floatingObject->frameRect().x().toInt(), floatingObject->frameRect().y().toInt(), floatingObject->frameRect().maxX().toInt(), floatingObject->frameRect().maxY().toInt());
+    }
 };
 #endif
 
index 4322077..7b94a1e 100644 (file)
@@ -24,7 +24,6 @@
 #define RenderBlock_h
 
 #include "ColumnInfo.h"
-#include "FloatingObjects.h"
 #include "GapRects.h"
 #include "PODIntervalTree.h"
 #include "RenderBox.h"
@@ -90,10 +89,6 @@ typedef unsigned TextRunFlags;
 class RenderBlock : public RenderBox {
 public:
     friend class LineLayoutState;
-#ifndef NDEBUG
-    // Used by the PODIntervalTree for debugging the FloatingObject.
-    template <class> friend struct ValueToString;
-#endif
 
 protected:
     RenderBlock(Element&, PassRef<RenderStyle>, unsigned baseTypeFlags);
index 6b77e36..e6c0dd4 100644 (file)
@@ -23,6 +23,7 @@
 #ifndef RenderBlockFlow_h
 #define RenderBlockFlow_h
 
+#include "FloatingObjects.h"
 #include "RenderBlock.h"
 #include "RenderLineBoxList.h"
 #include "SimpleLineLayout.h"
index 21b4fae..56cb2e6 100644 (file)
@@ -369,12 +369,8 @@ private:
     RenderFlowThread* m_previousRenderFlowThread;
 };
 
-// These structures are used by PODIntervalTree for debugging.
+// This structure is used by PODIntervalTree for debugging.
 #ifndef NDEBUG
-template <> struct ValueToString<LayoutUnit> {
-    static String string(const LayoutUnit value) { return String::number(value.toFloat()); }
-};
-
 template <> struct ValueToString<RenderRegion*> {
     static String string(const RenderRegion* value) { return String::format("%p", value); }
 };