Bug #: 4154
[WebKit-https.git] / SVGSupport / kdom / css / CSSStyleRule.cpp
1 /*
2     Copyright (C) 2004 Nikolas Zimmermann <wildfox@kde.org>
3                                   2004 Rob Buis <buis@kde.org>
4
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include "Ecma.h"
24 #include "DOMException.h"
25 #include "CSSStyleRule.h"
26 #include "CSSStyleSheet.h"
27 #include "CSSStyleRuleImpl.h"
28 #include "DOMExceptionImpl.h"
29 #include "CSSStyleDeclaration.h"
30
31 #include "kdom/data/CSSConstants.h"
32 #include "CSSStyleRule.lut.h"
33 using namespace KDOM;
34 using namespace KJS;
35
36 /*
37 @begin CSSStyleRule::s_hashTable 3
38  selectorText   CSSStyleRuleConstants::SelectorText             DontDelete|ReadOnly
39  style                  CSSStyleRuleConstants::Style                    DontDelete|ReadOnly
40 @end
41 */
42
43 Value CSSStyleRule::getValueProperty(ExecState *exec, int token) const
44 {
45         switch(token)
46         {
47                 case CSSStyleRuleConstants::SelectorText:
48                         return getDOMString(selectorText());
49                 case CSSStyleRuleConstants::Style:
50                         return safe_cache<CSSStyleDeclaration>(exec, style());
51                 default:
52                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
53         }
54
55         return Undefined();
56 }
57
58 void CSSStyleRule::putValueProperty(ExecState *exec, int token, const Value &value, int)
59 {
60         KDOM_ENTER_SAFE
61
62         switch(token)
63         {
64                 case CSSStyleRuleConstants::SelectorText:
65                         setSelectorText(toDOMString(exec, value));
66                         break;
67                 default:
68                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
69         }
70
71         KDOM_LEAVE_SAFE(DOMException)
72 }
73
74 // The qdom way...
75 #define impl (static_cast<CSSStyleRuleImpl *>(d))
76
77 CSSStyleRule CSSStyleRule::null;
78
79 CSSStyleRule::CSSStyleRule() : CSSRule()
80 {
81 }
82
83 CSSStyleRule::CSSStyleRule(const CSSStyleRule &other) : CSSRule()
84 {
85         (*this) = other;
86 }
87
88 CSSStyleRule::CSSStyleRule(const CSSRule &other) : CSSRule()
89 {
90         (*this) = other;
91 }
92
93 CSSStyleRule::CSSStyleRule(CSSStyleRuleImpl *i) : CSSRule(i)
94 {
95 }
96
97 CSSStyleRule::~CSSStyleRule()
98 {
99 }
100
101 CSSStyleRule &CSSStyleRule::operator=(const CSSStyleRule &other)
102 {
103         CSSRule::operator=(other);
104         return *this;
105 }
106
107 KDOM_CSSRULE_DERIVED_ASSIGN_OP(CSSStyleRule, STYLE_RULE)
108
109 void CSSStyleRule::setSelectorText(const DOMString &selectorText)
110 {
111         if(d)
112                 impl->setSelectorText(selectorText);
113 }
114
115 DOMString CSSStyleRule::selectorText() const
116 {
117         if(!d)
118                 return DOMString();
119
120         return impl->selectorText();
121 }
122
123 CSSStyleDeclaration CSSStyleRule::style() const
124 {
125         if(!d)
126                 return CSSStyleDeclaration::null;
127
128         return CSSStyleDeclaration(impl->style());
129 }
130
131 // vim:ts=4:noet