Merge NODE_TYPE_CASTS and ELEMENT_TYPE_CASTS
[WebKit-https.git] / Source / WebCore / mathml / MathMLElement.h
1 /*
2  * Copyright (C) 2009 Alex Milowski (alex@milowski.com). All rights reserved.
3  * Copyright (C) 2010 Apple Inc. All rights reserved.
4  * Copyright (C) 2010 Fran├žois Sausset (sausset@gmail.com). All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef MathMLElement_h
29 #define MathMLElement_h
30
31 #if ENABLE(MATHML)
32
33 #include "StyledElement.h"
34
35 namespace WebCore {
36
37 class MathMLElement : public StyledElement {
38 public:
39     static PassRefPtr<MathMLElement> create(const QualifiedName& tagName, Document&);
40
41     int colSpan() const;
42     int rowSpan() const;
43
44 protected:
45     MathMLElement(const QualifiedName& tagName, Document&);
46
47     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
48
49 private:    
50     virtual bool isMathMLElement() const { return true; }
51
52     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
53     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE;
54 };
55
56 void isMathMLElement(const MathMLElement&); // Catch unnecessary runtime check of type known at compile time.
57 inline bool isMathMLElement(const Element& element) { return element.isMathMLElement(); }
58 inline bool isMathMLElement(const Node& node) { return node.isElementNode() && toElement(node).isMathMLElement(); }
59 NODE_TYPE_CASTS(MathMLElement)
60
61 }
62
63 #endif // ENABLE(MATHML)
64
65 #endif // MathMLElement_h