blob: 5f906598ac7bde32a0bea4c5f04f759e3a37bb70 [file] [log] [blame]
/*
* THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
*
* This file was generated by the dom/make_names.pl script.
*
* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. 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 APPLE INC. ``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 APPLE INC. OR
* CONTRIBUTORS 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.
*/
#include "config.h"
#include "SVGElementFactory.h"
#include "SVGNames.h"
#include "SVGAElement.h"
#include "SVGAltGlyphElement.h"
#include "SVGAltGlyphDefElement.h"
#include "SVGAltGlyphItemElement.h"
#include "SVGAnimateElement.h"
#include "SVGAnimateColorElement.h"
#include "SVGAnimateMotionElement.h"
#include "SVGAnimateTransformElement.h"
#include "SVGCircleElement.h"
#include "SVGClipPathElement.h"
#include "SVGCursorElement.h"
#include "SVGDefsElement.h"
#include "SVGDescElement.h"
#include "SVGEllipseElement.h"
#include "SVGFEBlendElement.h"
#include "SVGFEColorMatrixElement.h"
#include "SVGFEComponentTransferElement.h"
#include "SVGFECompositeElement.h"
#include "SVGFEConvolveMatrixElement.h"
#include "SVGFEDiffuseLightingElement.h"
#include "SVGFEDisplacementMapElement.h"
#include "SVGFEDistantLightElement.h"
#include "SVGFEDropShadowElement.h"
#include "SVGFEFloodElement.h"
#include "SVGFEFuncAElement.h"
#include "SVGFEFuncBElement.h"
#include "SVGFEFuncGElement.h"
#include "SVGFEFuncRElement.h"
#include "SVGFEGaussianBlurElement.h"
#include "SVGFEImageElement.h"
#include "SVGFEMergeElement.h"
#include "SVGFEMergeNodeElement.h"
#include "SVGFEMorphologyElement.h"
#include "SVGFEOffsetElement.h"
#include "SVGFEPointLightElement.h"
#include "SVGFESpecularLightingElement.h"
#include "SVGFESpotLightElement.h"
#include "SVGFETileElement.h"
#include "SVGFETurbulenceElement.h"
#include "SVGFilterElement.h"
#include "SVGFontElement.h"
#include "SVGFontFaceElement.h"
#include "SVGFontFaceFormatElement.h"
#include "SVGFontFaceNameElement.h"
#include "SVGFontFaceSrcElement.h"
#include "SVGFontFaceUriElement.h"
#include "SVGForeignObjectElement.h"
#include "SVGGElement.h"
#include "SVGGlyphElement.h"
#include "SVGGlyphRefElement.h"
#include "SVGHKernElement.h"
#include "SVGImageElement.h"
#include "SVGLineElement.h"
#include "SVGLinearGradientElement.h"
#include "SVGMarkerElement.h"
#include "SVGMaskElement.h"
#include "SVGMetadataElement.h"
#include "SVGMissingGlyphElement.h"
#include "SVGMPathElement.h"
#include "SVGPathElement.h"
#include "SVGPatternElement.h"
#include "SVGPolygonElement.h"
#include "SVGPolylineElement.h"
#include "SVGRadialGradientElement.h"
#include "SVGRectElement.h"
#include "SVGScriptElement.h"
#include "SVGSetElement.h"
#include "SVGStopElement.h"
#include "SVGStyleElement.h"
#include "SVGSVGElement.h"
#include "SVGSwitchElement.h"
#include "SVGSymbolElement.h"
#include "SVGTextElement.h"
#include "SVGTextPathElement.h"
#include "SVGTitleElement.h"
#include "SVGTRefElement.h"
#include "SVGTSpanElement.h"
#include "SVGUseElement.h"
#include "SVGViewElement.h"
#include "SVGVKernElement.h"
#include "SVGUnknownElement.h"
#include "Document.h"
#include "RuntimeEnabledFeatures.h"
#include "Settings.h"
#include <wtf/HashMap.h>
#include <wtf/NeverDestroyed.h>
namespace WebCore {
using namespace SVGNames;
typedef Ref<SVGElement> (*SVGConstructorFunction)(const QualifiedName&, Document&, bool createdByParser);
static Ref<SVGElement> aConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAElement::create(tagName, document);
}
static Ref<SVGElement> altglyphConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAltGlyphElement::create(tagName, document);
}
static Ref<SVGElement> altglyphdefConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAltGlyphDefElement::create(tagName, document);
}
static Ref<SVGElement> altglyphitemConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAltGlyphItemElement::create(tagName, document);
}
static Ref<SVGElement> animateConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAnimateElement::create(tagName, document);
}
static Ref<SVGElement> animatecolorConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAnimateColorElement::create(tagName, document);
}
static Ref<SVGElement> animatemotionConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAnimateMotionElement::create(tagName, document);
}
static Ref<SVGElement> animatetransformConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGAnimateTransformElement::create(tagName, document);
}
static Ref<SVGElement> circleConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGCircleElement::create(tagName, document);
}
static Ref<SVGElement> clippathConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGClipPathElement::create(tagName, document);
}
static Ref<SVGElement> cursorConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGCursorElement::create(tagName, document);
}
static Ref<SVGElement> defsConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGDefsElement::create(tagName, document);
}
static Ref<SVGElement> descConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGDescElement::create(tagName, document);
}
static Ref<SVGElement> ellipseConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGEllipseElement::create(tagName, document);
}
static Ref<SVGElement> feblendConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEBlendElement::create(tagName, document);
}
static Ref<SVGElement> fecolormatrixConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEColorMatrixElement::create(tagName, document);
}
static Ref<SVGElement> fecomponenttransferConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEComponentTransferElement::create(tagName, document);
}
static Ref<SVGElement> fecompositeConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFECompositeElement::create(tagName, document);
}
static Ref<SVGElement> feconvolvematrixConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEConvolveMatrixElement::create(tagName, document);
}
static Ref<SVGElement> fediffuselightingConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEDiffuseLightingElement::create(tagName, document);
}
static Ref<SVGElement> fedisplacementmapConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEDisplacementMapElement::create(tagName, document);
}
static Ref<SVGElement> fedistantlightConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEDistantLightElement::create(tagName, document);
}
static Ref<SVGElement> fedropshadowConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEDropShadowElement::create(tagName, document);
}
static Ref<SVGElement> fefloodConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEFloodElement::create(tagName, document);
}
static Ref<SVGElement> fefuncaConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEFuncAElement::create(tagName, document);
}
static Ref<SVGElement> fefuncbConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEFuncBElement::create(tagName, document);
}
static Ref<SVGElement> fefuncgConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEFuncGElement::create(tagName, document);
}
static Ref<SVGElement> fefuncrConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEFuncRElement::create(tagName, document);
}
static Ref<SVGElement> fegaussianblurConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEGaussianBlurElement::create(tagName, document);
}
static Ref<SVGElement> feimageConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEImageElement::create(tagName, document);
}
static Ref<SVGElement> femergeConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEMergeElement::create(tagName, document);
}
static Ref<SVGElement> femergenodeConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEMergeNodeElement::create(tagName, document);
}
static Ref<SVGElement> femorphologyConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEMorphologyElement::create(tagName, document);
}
static Ref<SVGElement> feoffsetConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEOffsetElement::create(tagName, document);
}
static Ref<SVGElement> fepointlightConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFEPointLightElement::create(tagName, document);
}
static Ref<SVGElement> fespecularlightingConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFESpecularLightingElement::create(tagName, document);
}
static Ref<SVGElement> fespotlightConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFESpotLightElement::create(tagName, document);
}
static Ref<SVGElement> fetileConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFETileElement::create(tagName, document);
}
static Ref<SVGElement> feturbulenceConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFETurbulenceElement::create(tagName, document);
}
static Ref<SVGElement> filterConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFilterElement::create(tagName, document);
}
static Ref<SVGElement> fontConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontElement::create(tagName, document);
}
static Ref<SVGElement> fontfaceConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontFaceElement::create(tagName, document);
}
static Ref<SVGElement> fontfaceformatConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontFaceFormatElement::create(tagName, document);
}
static Ref<SVGElement> fontfacenameConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontFaceNameElement::create(tagName, document);
}
static Ref<SVGElement> fontfacesrcConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontFaceSrcElement::create(tagName, document);
}
static Ref<SVGElement> fontfaceuriConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGFontFaceUriElement::create(tagName, document);
}
static Ref<SVGElement> foreignobjectConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGForeignObjectElement::create(tagName, document);
}
static Ref<SVGElement> gConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGGElement::create(tagName, document);
}
static Ref<SVGElement> glyphConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGGlyphElement::create(tagName, document);
}
static Ref<SVGElement> glyphrefConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGGlyphRefElement::create(tagName, document);
}
static Ref<SVGElement> hkernConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGHKernElement::create(tagName, document);
}
static Ref<SVGElement> imageConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGImageElement::create(tagName, document);
}
static Ref<SVGElement> lineConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGLineElement::create(tagName, document);
}
static Ref<SVGElement> lineargradientConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGLinearGradientElement::create(tagName, document);
}
static Ref<SVGElement> markerConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGMarkerElement::create(tagName, document);
}
static Ref<SVGElement> maskConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGMaskElement::create(tagName, document);
}
static Ref<SVGElement> metadataConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGMetadataElement::create(tagName, document);
}
static Ref<SVGElement> missingglyphConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGMissingGlyphElement::create(tagName, document);
}
static Ref<SVGElement> mpathConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGMPathElement::create(tagName, document);
}
static Ref<SVGElement> pathConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGPathElement::create(tagName, document);
}
static Ref<SVGElement> patternConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGPatternElement::create(tagName, document);
}
static Ref<SVGElement> polygonConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGPolygonElement::create(tagName, document);
}
static Ref<SVGElement> polylineConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGPolylineElement::create(tagName, document);
}
static Ref<SVGElement> radialgradientConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGRadialGradientElement::create(tagName, document);
}
static Ref<SVGElement> rectConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGRectElement::create(tagName, document);
}
static Ref<SVGElement> scriptConstructor(const QualifiedName& tagName, Document& document, bool createdByParser)
{
return SVGScriptElement::create(tagName, document, createdByParser);
}
static Ref<SVGElement> setConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGSetElement::create(tagName, document);
}
static Ref<SVGElement> stopConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGStopElement::create(tagName, document);
}
static Ref<SVGElement> styleConstructor(const QualifiedName& tagName, Document& document, bool createdByParser)
{
return SVGStyleElement::create(tagName, document, createdByParser);
}
static Ref<SVGElement> svgConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGSVGElement::create(tagName, document);
}
static Ref<SVGElement> switchConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGSwitchElement::create(tagName, document);
}
static Ref<SVGElement> symbolConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGSymbolElement::create(tagName, document);
}
static Ref<SVGElement> textConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGTextElement::create(tagName, document);
}
static Ref<SVGElement> textpathConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGTextPathElement::create(tagName, document);
}
static Ref<SVGElement> titleConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGTitleElement::create(tagName, document);
}
static Ref<SVGElement> trefConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGTRefElement::create(tagName, document);
}
static Ref<SVGElement> tspanConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGTSpanElement::create(tagName, document);
}
static Ref<SVGElement> useConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGUseElement::create(tagName, document);
}
static Ref<SVGElement> viewConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGViewElement::create(tagName, document);
}
static Ref<SVGElement> vkernConstructor(const QualifiedName& tagName, Document& document, bool)
{
return SVGVKernElement::create(tagName, document);
}
struct ConstructorFunctionMapEntry {
ConstructorFunctionMapEntry(SVGConstructorFunction function, const QualifiedName& name)
: function(function)
, qualifiedName(&name)
{ }
ConstructorFunctionMapEntry()
: function(nullptr)
, qualifiedName(nullptr)
{ }
SVGConstructorFunction function;
const QualifiedName* qualifiedName; // Use pointer instead of reference so that emptyValue() in HashMap is cheap to create.
};
static NEVER_INLINE void populateSVGFactoryMap(HashMap<AtomicStringImpl*, ConstructorFunctionMapEntry>& map)
{
struct TableEntry {
const QualifiedName& name;
SVGConstructorFunction function;
};
static const TableEntry table[] = {
{ aTag, aConstructor },
{ altGlyphTag, altglyphConstructor },
{ altGlyphDefTag, altglyphdefConstructor },
{ altGlyphItemTag, altglyphitemConstructor },
{ animateTag, animateConstructor },
{ animateColorTag, animatecolorConstructor },
{ animateMotionTag, animatemotionConstructor },
{ animateTransformTag, animatetransformConstructor },
{ circleTag, circleConstructor },
{ clipPathTag, clippathConstructor },
{ cursorTag, cursorConstructor },
{ defsTag, defsConstructor },
{ descTag, descConstructor },
{ ellipseTag, ellipseConstructor },
{ feBlendTag, feblendConstructor },
{ feColorMatrixTag, fecolormatrixConstructor },
{ feComponentTransferTag, fecomponenttransferConstructor },
{ feCompositeTag, fecompositeConstructor },
{ feConvolveMatrixTag, feconvolvematrixConstructor },
{ feDiffuseLightingTag, fediffuselightingConstructor },
{ feDisplacementMapTag, fedisplacementmapConstructor },
{ feDistantLightTag, fedistantlightConstructor },
{ feDropShadowTag, fedropshadowConstructor },
{ feFloodTag, fefloodConstructor },
{ feFuncATag, fefuncaConstructor },
{ feFuncBTag, fefuncbConstructor },
{ feFuncGTag, fefuncgConstructor },
{ feFuncRTag, fefuncrConstructor },
{ feGaussianBlurTag, fegaussianblurConstructor },
{ feImageTag, feimageConstructor },
{ feMergeTag, femergeConstructor },
{ feMergeNodeTag, femergenodeConstructor },
{ feMorphologyTag, femorphologyConstructor },
{ feOffsetTag, feoffsetConstructor },
{ fePointLightTag, fepointlightConstructor },
{ feSpecularLightingTag, fespecularlightingConstructor },
{ feSpotLightTag, fespotlightConstructor },
{ feTileTag, fetileConstructor },
{ feTurbulenceTag, feturbulenceConstructor },
{ filterTag, filterConstructor },
{ fontTag, fontConstructor },
{ font_faceTag, fontfaceConstructor },
{ font_face_formatTag, fontfaceformatConstructor },
{ font_face_nameTag, fontfacenameConstructor },
{ font_face_srcTag, fontfacesrcConstructor },
{ font_face_uriTag, fontfaceuriConstructor },
{ foreignObjectTag, foreignobjectConstructor },
{ gTag, gConstructor },
{ glyphTag, glyphConstructor },
{ glyphRefTag, glyphrefConstructor },
{ hkernTag, hkernConstructor },
{ imageTag, imageConstructor },
{ lineTag, lineConstructor },
{ linearGradientTag, lineargradientConstructor },
{ markerTag, markerConstructor },
{ maskTag, maskConstructor },
{ metadataTag, metadataConstructor },
{ missing_glyphTag, missingglyphConstructor },
{ mpathTag, mpathConstructor },
{ pathTag, pathConstructor },
{ patternTag, patternConstructor },
{ polygonTag, polygonConstructor },
{ polylineTag, polylineConstructor },
{ radialGradientTag, radialgradientConstructor },
{ rectTag, rectConstructor },
{ scriptTag, scriptConstructor },
{ setTag, setConstructor },
{ stopTag, stopConstructor },
{ styleTag, styleConstructor },
{ svgTag, svgConstructor },
{ switchTag, switchConstructor },
{ symbolTag, symbolConstructor },
{ textTag, textConstructor },
{ textPathTag, textpathConstructor },
{ titleTag, titleConstructor },
{ trefTag, trefConstructor },
{ tspanTag, tspanConstructor },
{ useTag, useConstructor },
{ viewTag, viewConstructor },
{ vkernTag, vkernConstructor },
};
for (unsigned i = 0; i < WTF_ARRAY_LENGTH(table); ++i)
map.add(table[i].name.localName().impl(), ConstructorFunctionMapEntry(table[i].function, table[i].name));
}
static ConstructorFunctionMapEntry findSVGElementConstructorFunction(const AtomicString& localName)
{
static NeverDestroyed<HashMap<AtomicStringImpl*, ConstructorFunctionMapEntry>> map;
if (map.get().isEmpty())
populateSVGFactoryMap(map);
return map.get().get(localName.impl());
}
RefPtr<SVGElement> SVGElementFactory::createKnownElement(const AtomicString& localName, Document& document, bool createdByParser)
{
const ConstructorFunctionMapEntry& entry = findSVGElementConstructorFunction(localName);
if (LIKELY(entry.function)) {
ASSERT(entry.qualifiedName);
const auto& name = *entry.qualifiedName;
return entry.function(name, document, createdByParser);
}
return nullptr;
}
RefPtr<SVGElement> SVGElementFactory::createKnownElement(const QualifiedName& name, Document& document, bool createdByParser)
{
const ConstructorFunctionMapEntry& entry = findSVGElementConstructorFunction(name.localName());
if (LIKELY(entry.function))
return entry.function(name, document, createdByParser);
return nullptr;
}
Ref<SVGElement> SVGElementFactory::createElement(const AtomicString& localName, Document& document, bool createdByParser)
{
const ConstructorFunctionMapEntry& entry = findSVGElementConstructorFunction(localName);
if (LIKELY(entry.function)) {
ASSERT(entry.qualifiedName);
const auto& name = *entry.qualifiedName;
return entry.function(name, document, createdByParser);
}
return SVGUnknownElement::create(QualifiedName(nullAtom, localName, svgNamespaceURI), document);
}
Ref<SVGElement> SVGElementFactory::createElement(const QualifiedName& name, Document& document, bool createdByParser)
{
const ConstructorFunctionMapEntry& entry = findSVGElementConstructorFunction(name.localName());
if (LIKELY(entry.function))
return entry.function(name, document, createdByParser);
return SVGUnknownElement::create(name, document);
}
} // namespace WebCore