/*
 * 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.
 */

#ifndef DOM_MathMLNames_h

#define DOM_MathMLNames_h

#include "QualifiedName.h"

namespace WebCore {

class MathMLQualifiedName : public QualifiedName { };

namespace MathMLNames {

#ifndef DOM_MathML_NAMES_HIDE_GLOBALS

// Namespace
WEBCORE_EXPORT extern const WTF::AtomicString mathmlNamespaceURI;

// Tags
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName annotationTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName annotation_xmlTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mactionTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName maligngroupTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName malignmarkTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mathTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mencloseTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName merrorTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mfencedTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mfracTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mglyphTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName miTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mlabeledtrTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mlongdivTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mmultiscriptsTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mnTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName moTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName moverTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mpaddedTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mphantomTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mprescriptsTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mrootTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mrowTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mscarriesTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mscarryTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msgroupTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mslineTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mspaceTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msqrtTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msrowTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mstackTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mstyleTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msubTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msubsupTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName msupTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mtableTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mtdTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mtextTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName mtrTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName munderTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName munderoverTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName noneTag;
WEBCORE_EXPORT extern const WebCore::MathMLQualifiedName semanticsTag;
// Attributes
WEBCORE_EXPORT extern const WebCore::QualifiedName accentAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName accentunderAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName actiontypeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName alttextAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName backgroundAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName closeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName colorAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName columnspanAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName definitionURLAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName denomalignAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName depthAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName dirAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName displayAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName displaystyleAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName encodingAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName fenceAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName fontfamilyAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName fontsizeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName fontstyleAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName fontweightAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName formAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName heightAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName hrefAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName largeopAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName linethicknessAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName lspaceAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName mathbackgroundAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName mathcolorAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName mathsizeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName mathvariantAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName maxsizeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName minsizeAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName movablelimitsAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName notationAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName numalignAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName openAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName rowspanAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName rspaceAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName selectionAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName separatorAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName separatorsAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName srcAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName stretchyAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName subscriptshiftAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName superscriptshiftAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName symmetricAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName voffsetAttr;
WEBCORE_EXPORT extern const WebCore::QualifiedName widthAttr;
#endif

const unsigned MathMLTagsCount = 44;
const WebCore::MathMLQualifiedName* const* getMathMLTags();
const unsigned MathMLAttrsCount = 48;
const WebCore::QualifiedName* const* getMathMLAttrs();

WEBCORE_EXPORT void init();

} }

#endif

