Bug #: 4154
[WebKit-https.git] / SVGSupport / kdom / css / StyleSheetList.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 "NodeImpl.h"
25 #include "StyleSheet.h"
26 #include "StyleSheetList.h"
27 #include "StyleSheetListImpl.h"
28
29 #include "kdom/data/CSSConstants.h"
30 #include "StyleSheetList.lut.h"
31 using namespace KDOM;
32 using namespace KJS;
33
34 /*
35 @begin StyleSheetList::s_hashTable 2
36  length         StyleSheetListConstants::Length         DontDelete
37 @end
38 @begin StyleSheetListProto::s_hashTable 2
39  item           StyleSheetListConstants::Item           DontDelete|Function 1
40 @end
41 */
42
43 KDOM_IMPLEMENT_PROTOTYPE("StyleSheetList", StyleSheetListProto, StyleSheetListProtoFunc)
44
45 Value StyleSheetList::getValueProperty(ExecState *, int token) const
46 {
47         switch(token)
48         {
49                 case StyleSheetListConstants::Length:
50                         return Number(length());
51                 default:
52                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
53         }
54
55         return Undefined();
56 }
57
58 Value StyleSheetListProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
59 {
60         KDOM_CHECK_THIS(StyleSheetList)
61
62         switch(id)
63         {
64                 case StyleSheetListConstants::Item:
65                 {
66                         unsigned long index = args[0].toUInt32(exec);
67                         return safe_cache<StyleSheet>(exec, obj.item(index));
68                 }
69                 default:
70                         kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
71                         break;
72         }
73
74         return Undefined();
75 }
76
77 StyleSheetList StyleSheetList::null;
78
79 StyleSheetList::StyleSheetList() : d(0)
80 {
81 }
82
83 StyleSheetList::StyleSheetList(StyleSheetListImpl *i) : d(i)
84 {
85         if(d)
86                 d->ref();
87 }
88
89 StyleSheetList::StyleSheetList(const StyleSheetList &other) : d(0)
90 {
91         (*this) = other;
92 }
93
94 KDOM_IMPL_DTOR_ASSIGN_OP(StyleSheetList)
95
96 unsigned long StyleSheetList::length() const
97 {
98         if(!d)
99                 return 0;
100
101         return d->length();
102 }
103
104 StyleSheet StyleSheetList::item(unsigned long index) const
105 {
106         if(!d)
107                 return StyleSheet::null;
108
109         return StyleSheet(d->item(index));
110 }
111
112 // vim:ts=4:noet