Reviewed by Anders.

        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8995
          memory leak in XPath code -- seen in layout tests
        - fixed malloc error on exit due to SVGDOMImplementation destructor
        - attempted to fix the no-XPATH_SUPPORT build by adding an #if
        - changed around includes and header-file formatting in XPath code

        * bindings/scripts/CodeGeneratorJS.pm: Include PlatformString.h when
        generating the bindings for XPathNSResolver.

        * dom/DOMImplementation.h: Added a virtual destructor for the benefit of
        SVGDOMImplementation.
        * dom/DOMImplementation.cpp: (WebCore::DOMImplementation::~DOMImplementation): Added.

        * ksvg2/svg/SVGDOMImplementation.h: Reformatted a bit, removed unneeded declarations.
        * ksvg2/svg/SVGDOMImplementation.cpp:
        (SVGDOMImplementation::~SVGDOMImplementation): Remove commented-out code.
        (SVGDOMImplementation::createDocument): Remove a reference to KDOMView.

        * xpath/XPathExpression.cpp:
        (WebCore::XPathExpression::createExpression): Called release to avoid a tiny bit of
        reference count churn.
        (WebCore::XPathExpression::evaluate): Set exception code explicitly, because the code
        relies on it being 0 when the function succeeds.

        * xpath/XPathResult.cpp:
        (WebCore::InvalidatingEventListener::InvalidatingEventListener): Removed
        unneeded target node data member.
        (WebCore::XPathResult::XPathResult): Updated for enum name changes and
        InvalidatingEventListener name change. Added an assertion.

        * xpath/impl/XPathFunctions.h: Removed the FunctionLibrary class. Changed the parameter
        for createFunction to be a String instead of char*.
        * xpath/impl/XPathFunctions.cpp: Got rid of local implementation of "round", and
        used <wtf/MathExtras.h> instead. Also removed unused Interval::asString. Marked all
        the Interval functions inline.
        (WebCore::XPath::FunSubstring::doEvaluate): Use lround() instead of (long)round().
        (WebCore::XPath::FunLang::doEvaluate): Removed some unneeded temporary String variables.
        Use equalIgnoringCase() instead of calling lower() on two strings.
        (WebCore::XPath::createFunctionMap): Changed how this works so that it's all local to
        this function. Also removed a duplicate entry for the "last" function.
        (WebCore::XPath::createFunction): Changed from a member function to a separate function.
        Also changed so that if the args are not used in the function they are deleted.
        This was one of the sources of the storage leaks.

        * xpath/impl/XPathGrammar.y: Put XPATH_SUPPORT ifdef in. Replaced <num> with values of
        specific types (numop, eqop). Updated for name change from AxisType to Axis. Changed
        tokens that were declared as <str> but weren't actually using the string to be
        declared with no type (PLUS, MINUS, OR, AND, DOTDOT, SLASHSLASH). Replaced use of
        unregisterString, unregisterPredicateVector, and unregisterExpressionVector to
        call delete functions instead that both unregister and delete. Change call sites for
        createFunction to just use the String, removing the deprecatedString().latin1() call
        that is no longer needed. Added a call to unregisterParseNode that was missing in the
        "FilterExpr DescendantOrSelf RelativeLocationPath" production.

        * xpath/impl/XPathParser.h: Changed Token to hold a String, Step::Axis, NumericOp::Opcode,
        and EqTestOp::Opcode. The token ID number tells us which to use. Rearranged to put the private
        part of the Parser class last. Moved a number of private things inside the cpp file.
        * xpath/impl/XPathParser.cpp:
        (WebCore::XPath::charCat): Made this a separate function, instead of a static member.
        (WebCore::XPath::isAxisName): Ditto. Also put the global axis map inside the function,
        allowing use of a map instead of a map pointer.
        (WebCore::XPath::isNodeTypeName): Ditto.
        (WebCore::XPath::Parser::isOperatorContext): Made this const.
        (WebCore::XPath::Parser::makeTokenAndAdvance): Got rid of the "int" version of this.
        By using the actual types, we can safely use overload instead.
        (WebCore::XPath::Parser::lexString): Use substring() instead of deprecatedString().mid().
        (WebCore::XPath::Parser::lexNumber): Ditto.
        (WebCore::XPath::Parser::lexNCName): Changed to return a bool and a String instead of a
        Token. This avoids the hack of using a token value of "ERROR + 1" which I found quite
        confusing and is also a bit more explicit.
        (WebCore::XPath::Parser::lexQName): Ditto.
        (WebCore::XPath::Parser::nextTokenInternal): Changed to adapt to the changes above and
        to remove some unneeded else statements.
        (WebCore::XPath::Parser::lex): Changed the logic that sets up yylval to use the token ID
        to decide what the type is. This matches what the grammar expects, and removes the need
        for the token object to track which part of the value is good and the need to reserve 0
        to have a special meaning.
        (WebCore::XPath::Parser::parseStatement): Added code to delete the predicates and the
        expressions in the predicate and expression vectors. Before, we were only deleting
        the vectors. This was one of the sources of the storage leaks.
        (WebCore::XPath::Parser::deletePredicateVector): Renamed, and changed to delete
        the vector. However this does not delete the predicates in the vector.
        (WebCore::XPath::Parser::deleteExpressionVector): Renamed, and changed to delete
        the vector. However this does not delete the expressions in the vector.
        (WebCore::XPath::Parser::deleteString): Renamed, and changed to delete the string.

        * xpath/impl/XPathPredicate.h:
        * xpath/impl/XPathPredicate.cpp:
        (WebCore::XPath::NumericOp::NumericOp): Changed opcode from an int to an enum, and
        renamed to "opcode" instead of "opCode".
        (WebCore::XPath::NumericOp::doEvaluate): More of the same.
        (WebCore::XPath::EqTestOp::EqTestOp): Ditto.
        (WebCore::XPath::EqTestOp::doEvaluate): Ditto.
        (WebCore::XPath::LogicalOp::LogicalOp): Ditto.
        (WebCore::XPath::LogicalOp::shortCircuitOn): Ditto.
        (WebCore::XPath::Predicate::evaluate): Removed an unneeded "new".

        * xpath/impl/XPathStep.h:
        * xpath/impl/XPathStep.cpp: Renamed AxisType to Axis. Removed unused axisAsString
        function and default constructor.

        * xpath/impl/XPathValue.h: Renamed the type constants to have a Value suffix,
        instead of the underscore suffix used before on NodeVector and String.
        * xpath/impl/XPathValue.cpp: Updated for name change. Added asserts.

        * xpath/impl/XPathVariableReference.cpp: (WebCore::XPath::VariableReference::doEvaluate):
        Use a reference instead of a pointer.

        * xpath/XPathEvaluator.cpp:
        * xpath/XPathEvaluator.h:
        * xpath/XPathExpression.h:
        * xpath/XPathNSResolver.cpp:
        * xpath/XPathNSResolver.h:
        * xpath/XPathNamespace.cpp:
        * xpath/XPathNamespace.h:
        * xpath/XPathResult.h:
        * xpath/impl/XPathExpressionNode.cpp:
        * xpath/impl/XPathExpressionNode.h:
        * xpath/impl/XPathPath.cpp:
        * xpath/impl/XPathPath.h:
        * xpath/impl/XPathUtil.cpp:
        * xpath/impl/XPathUtil.h:
        * xpath/impl/XPathVariableReference.h:
        Reformatted and changed includes around; no substantive changes.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@14729 268f45cc-cd09-0410-ab3c-d52691b4dbfc
36 files changed