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