WebCore/generated/MathMLElementFactory.cpp
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 /*
       
     2  * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
       
     3  *
       
     4  * This file was generated by the dom/make_names.pl script.
       
     5  *
       
     6  * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc.  All rights reserved.
       
     7  *
       
     8  * Redistribution and use in source and binary forms, with or without
       
     9  * modification, are permitted provided that the following conditions
       
    10  * are met:
       
    11  * 1. Redistributions of source code must retain the above copyright
       
    12  *    notice, this list of conditions and the following disclaimer.
       
    13  * 2. Redistributions in binary form must reproduce the above copyright
       
    14  *    notice, this list of conditions and the following disclaimer in the
       
    15  *    documentation and/or other materials provided with the distribution.
       
    16  *
       
    17  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
       
    18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    20  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
       
    21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
       
    25  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       
    27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    28  */
       
    29 
       
    30 #include "config.h"
       
    31 #include "MathMLElementFactory.h"
       
    32 #include "MathMLNames.h"
       
    33 
       
    34 #if ENABLE(MATHML)
       
    35 
       
    36 #include "MathMLMathElement.h"
       
    37 #include "MathMLInlineContainerElement.h"
       
    38 #include "MathMLTextElement.h"
       
    39 #include "MathMLElement.h"
       
    40 #include <wtf/HashMap.h>
       
    41 
       
    42 #if ENABLE(DASHBOARD_SUPPORT) || ENABLE(VIDEO)
       
    43 #include "Document.h"
       
    44 #include "Settings.h"
       
    45 #endif
       
    46 
       
    47 namespace WebCore {
       
    48 
       
    49 using namespace MathMLNames;
       
    50 
       
    51 typedef PassRefPtr<MathMLElement> (*ConstructorFunction)(const QualifiedName&, Document*, bool createdByParser);
       
    52 typedef HashMap<AtomicStringImpl*, ConstructorFunction> FunctionMap;
       
    53 
       
    54 static FunctionMap* gFunctionMap = 0;
       
    55 
       
    56 static PassRefPtr<MathMLElement> mathConstructor(const QualifiedName& tagName, Document* document, bool)
       
    57 {
       
    58     return MathMLMathElement::create(tagName, document);
       
    59 }
       
    60 
       
    61 static PassRefPtr<MathMLElement> inlinecontainerConstructor(const QualifiedName& tagName, Document* document, bool)
       
    62 {
       
    63     return MathMLInlineContainerElement::create(tagName, document);
       
    64 }
       
    65 
       
    66 static PassRefPtr<MathMLElement> textConstructor(const QualifiedName& tagName, Document* document, bool)
       
    67 {
       
    68     return MathMLTextElement::create(tagName, document);
       
    69 }
       
    70 
       
    71 static void addTag(const QualifiedName& tag, ConstructorFunction func)
       
    72 {
       
    73     gFunctionMap->set(tag.localName().impl(), func);
       
    74 }
       
    75 
       
    76 static void createFunctionMap()
       
    77 {
       
    78     ASSERT(!gFunctionMap);
       
    79 
       
    80     // Create the table.
       
    81     gFunctionMap = new FunctionMap;
       
    82     
       
    83     // Populate it with constructor functions.
       
    84     addTag(mathTag, mathConstructor);
       
    85     addTag(mfencedTag, inlinecontainerConstructor);
       
    86     addTag(mfracTag, inlinecontainerConstructor);
       
    87     addTag(miTag, textConstructor);
       
    88     addTag(mnTag, textConstructor);
       
    89     addTag(moTag, textConstructor);
       
    90     addTag(moverTag, inlinecontainerConstructor);
       
    91     addTag(mrootTag, inlinecontainerConstructor);
       
    92     addTag(mrowTag, inlinecontainerConstructor);
       
    93     addTag(msqrtTag, inlinecontainerConstructor);
       
    94     addTag(msubsupTag, inlinecontainerConstructor);
       
    95     addTag(mtextTag, textConstructor);
       
    96     addTag(munderTag, inlinecontainerConstructor);
       
    97     addTag(munderoverTag, inlinecontainerConstructor);
       
    98 }
       
    99 
       
   100 PassRefPtr<MathMLElement> MathMLElementFactory::createMathMLElement(const QualifiedName& qName, Document* document, bool createdByParser)
       
   101 {
       
   102     if (!document)
       
   103         return 0;
       
   104 
       
   105 #if ENABLE(DASHBOARD_SUPPORT)
       
   106     Settings* settings = document->settings();
       
   107     if (settings && settings->usesDashboardBackwardCompatibilityMode())
       
   108         return 0;
       
   109 #endif
       
   110     if (!gFunctionMap)
       
   111         createFunctionMap();
       
   112     if (ConstructorFunction function = gFunctionMap->get(qName.localName().impl()))
       
   113         return function(qName, document, createdByParser);
       
   114     return MathMLElement::create(qName, document);
       
   115 }
       
   116 
       
   117 } // namespace WebCore
       
   118 
       
   119 #endif