WebCore:

2009-01-25  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Bug 23522: use checked casts for render tree
        https://bugs.webkit.org/show_bug.cgi?id=23522

        Step one: RenderText.

        Also change set of RenderFlow* to be a ListHashSet as the comment in the
        header indicated.

        * dom/CharacterData.cpp:
        (WebCore::CharacterData::setData): Use toRenderText.
        (WebCore::CharacterData::appendData): Ditto.
        (WebCore::CharacterData::insertData): Ditto.
        (WebCore::CharacterData::deleteData): Ditto.
        (WebCore::CharacterData::replaceData): Ditto.
        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::getUpperLeftCorner): Ditto.
        (WebCore::ContainerNode::getLowerRightCorner): Ditto.
        * dom/Position.cpp:
        (WebCore::nextRenderedEditable): Ditto.
        (WebCore::previousRenderedEditable): Ditto.
        (WebCore::Position::renderedOffset): Ditto. Also use function members
        instead of data members of InlineTextBox.
        (WebCore::Position::upstream): Ditto.
        (WebCore::Position::downstream): Ditto.
        (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight): Ditto.
        (WebCore::Position::inRenderedText): Ditto.
        (WebCore::Position::isRenderedCharacter): Ditto.
        (WebCore::searchAheadForBetterMatch): Ditto.
        (WebCore::Position::getInlineBoxAndOffset): Ditto.

        * dom/Range.cpp: Added include of VisiblePosition.h now that it's no longer
        included in RenderObject.h.

        * dom/Text.cpp:
        (WebCore::Text::splitText): Use toRenderText.
        (WebCore::Text::recalcStyle): Ditto.
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::deleteInsignificantText): Ditto.
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::debugRenderer): Ditto.
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::handleTextNode): Ditto.
        (WebCore::TextIterator::handleTextBox): Ditto.
        (WebCore::TextIterator::emitText): Ditto.
        (WebCore::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.

        * editing/VisiblePosition.cpp: Added include of FloatQuad.h now that it's
        no longer included in RenderObject.h.
        * inspector/InspectorController.cpp: Ditto.
        * page/Frame.cpp: Ditto.
        * rendering/RenderBox.cpp: Ditto.
        * rendering/RenderInline.cpp: Ditto.
        * rendering/RenderPath.cpp: Ditto.
        * rendering/RenderSVGContainer.cpp: Ditto.
        * rendering/RenderSVGImage.cpp: Ditto.
        * rendering/RenderSVGInlineText.cpp: Ditto.
        * rendering/RenderSVGTSpan.cpp: Ditto.
        * rendering/RenderSVGText.cpp: Ditto.
        * rendering/RenderSVGTextPath.cpp: Ditto.
        * rendering/RenderTableCell.cpp: Ditto.
        * rendering/RenderView.cpp: Ditto.

        * editing/visible_units.cpp:
        (WebCore::startPositionForLine): Use function members instead of data
        members of InlineTextBox.
        (WebCore::endPositionForLine): Ditto.
        (WebCore::startOfParagraph): Use toRenderText.
        (WebCore::endOfParagraph): Ditto.

        * page/AccessibilityRenderObject.cpp:
        (WebCore::AccessibilityRenderObject::accessibilityIsIgnored): Use toRenderText.
        * rendering/InlineFlowBox.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally): Ditto.
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::deleteLine): Ditto.
        (WebCore::InlineTextBox::extractLine): Ditto.
        (WebCore::InlineTextBox::attachLine): Ditto.
        (WebCore::InlineTextBox::placeEllipsisBox): Ditto.
        (WebCore::InlineTextBox::paintDecoration): Ditto.
        (WebCore::InlineTextBox::paintCompositionUnderline): Ditto.
        (WebCore::InlineTextBox::offsetForPosition): Ditto.
        (WebCore::InlineTextBox::positionForOffset): Ditto.

        * rendering/InlineTextBox.h: Made most members private. Use toRenderText.

        * rendering/RenderArena.cpp:
        (WebCore::RenderArena::allocate): Use static_cast instead of C-style cast.
        (WebCore::RenderArena::free): Ditto.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::addContinuationWithOutline): Use ListHashSet<RenderFlow*>
        instead of RenderFlowSequencedSet.
        (WebCore::RenderBlock::paintContinuationOutlines): Ditto.
        (WebCore::stripTrailingSpace): Ditto.
        (WebCore::RenderBlock::calcInlinePrefWidths): Ditto.
        (WebCore::RenderBlock::updateFirstLetter): Ditto.

        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::addChild): Use toRenderText.

        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::dirtyLinesFromChangedChild): Use ListHashSet<RenderFlow*>
        instead of RenderFlowSequencedSet.
        (WebCore::RenderFlow::paintLines): Ditto.

        * rendering/RenderMenuList.cpp: Removed some unneeded includes.

        * rendering/RenderMenuList.h: Added now-needed forward declaration of RenderText.
        Made more members private.

        * rendering/RenderObject.cpp: Updated includes.
        (WebCore::RenderObject::isEditable): Use toRenderText.
        (WebCore::RenderObject::positionForPoint): Made non-inline so we wouldn't have to
        include VisiblePosition.h in the header just for this.

        * rendering/RenderObject.h: Removed unneeded includes and forward declarations.
        Changed special vertical position values to be constants rather than an enum.
        Eliminated RenderFlowSequencedSet, and changed clients to use ListHashSet<RenderFlow*>.

        * rendering/RenderText.cpp:
        (WebCore::RenderText::findNextInlineTextBox): Use function members instead of
        data members of InlineTextBox.
        (WebCore::RenderText::positionForCoordinates): Ditto.
        (WebCore::isInlineFlowOrEmptyText): Use toRenderText.
        (WebCore::RenderText::previousCharacter): Use function members instead of
        data members of InlineTextBox.
        (WebCore::RenderText::position): Ditto.
        (WebCore::RenderText::caretMinOffset): Ditto.
        (WebCore::RenderText::caretMaxOffset): Ditto.
        (WebCore::RenderText::caretMaxRenderedOffset): Ditto.

        * rendering/RenderText.h: Added definition of toRenderText.

        * rendering/RenderTextControl.cpp:
        (WebCore::RenderTextControl::textWithHardLineBreaks): Use toRenderText.
        * rendering/RenderTreeAsText.cpp:
        (WebCore::operator<<): Use toRenderText and toRenderBox.
        (WebCore::writeTextRun): Ditto.
        (WebCore::write): Ditto.

        * rendering/bidi.cpp:
        (WebCore::InlineIterator::increment): Use toRenderText.
        (WebCore::InlineIterator::current): Ditto.
        (WebCore::checkMidpoints): Ditto.
        (WebCore::RenderBlock::computeHorizontalPositionsForLine): Ditto.
        (WebCore::RenderBlock::layoutInlineChildren): Ditto.
        (WebCore::RenderBlock::determineStartPosition): Ditto.
        (WebCore::shouldSkipWhitespaceAfterStartObject): Ditto.
        (WebCore::RenderBlock::findNextLineBreak): Ditto.

WebKit/mac:

2009-01-25  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Bug 23522: use checked casts for render tree
        https://bugs.webkit.org/show_bug.cgi?id=23522

        Step one: RenderText.

        * WebView/WebRenderNode.mm:
        (copyRenderNode): Use toRenderText.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@40229 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/RenderText.h b/WebCore/rendering/RenderText.h
index 5d88c40..7736f1a 100644
--- a/WebCore/rendering/RenderText.h
+++ b/WebCore/rendering/RenderText.h
@@ -1,7 +1,7 @@
 /*
  * (C) 1999 Lars Knoll (knoll@kde.org)
  * (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -169,6 +169,18 @@
     bool m_isAllASCII : 1;
 };
 
+inline RenderText* toRenderText(RenderObject* o)
+{ 
+    ASSERT(!o || o->isText());
+    return static_cast<RenderText*>(o);
+}
+
+inline const RenderText* toRenderText(const RenderObject* o)
+{ 
+    ASSERT(!o || o->isText());
+    return static_cast<const RenderText*>(o);
+}
+
 #ifdef NDEBUG
 inline void RenderText::checkConsistency() const
 {