Changeset 35254 in webkit
- Timestamp:
- Jul 20, 2008 1:40:49 PM (16 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r35253 r35254 1 2008-07-20 Nikolas Zimmermann <zimmermann@kde.org> 2 3 Reviewed by Oliver. 4 5 Cleanup JSSVGPODTypeWrapper code. 6 7 Rename: JSSVGPODTypeWrapperCreatorReadOnly -> JSSVGStaticPODTypeWrapper 8 JSSVGPODTypeWrapperReadWrite -> JSSVGDynamicPODTypeWrapper 9 JSSVGPODTypeWrapperCache -> JSSVGDynamicPODTypeWrapperCacheCache 10 11 No functional changes. 12 13 * bindings/js/JSSVGMatrixCustom.cpp: 14 (WebCore::JSSVGMatrix::multiply): 15 (WebCore::JSSVGMatrix::inverse): 16 (WebCore::JSSVGMatrix::translate): 17 (WebCore::JSSVGMatrix::scale): 18 (WebCore::JSSVGMatrix::scaleNonUniform): 19 (WebCore::JSSVGMatrix::rotate): 20 (WebCore::JSSVGMatrix::rotateFromVector): 21 (WebCore::JSSVGMatrix::flipX): 22 (WebCore::JSSVGMatrix::flipY): 23 (WebCore::JSSVGMatrix::skewX): 24 (WebCore::JSSVGMatrix::skewY): 25 * bindings/js/JSSVGPODTypeWrapper.h: 26 (WebCore::JSSVGDynamicPODTypeWrapper::create): 27 (WebCore::JSSVGDynamicPODTypeWrapper::operator PODType): 28 (WebCore::JSSVGDynamicPODTypeWrapper::JSSVGDynamicPODTypeWrapper): 29 (WebCore::JSSVGStaticPODTypeWrapper::create): 30 (WebCore::JSSVGStaticPODTypeWrapper::operator PODType): 31 (WebCore::JSSVGStaticPODTypeWrapper::JSSVGStaticPODTypeWrapper): 32 (WebCore::JSSVGPODTypeWrapperCreatorForList::create): 33 (WebCore::JSSVGPODTypeWrapperCreatorForList::operator PODType): 34 (WebCore::JSSVGPODTypeWrapperCreatorForList::JSSVGPODTypeWrapperCreatorForList): 35 (WebCore::PODTypeWrapperCacheInfo::PODTypeWrapperCacheInfo): 36 (WebCore::PODTypeWrapperCacheInfo::operator==): 37 (WebCore::PODTypeWrapperCacheInfoHash::hash): 38 (WebCore::PODTypeWrapperCacheInfoHash::equal): 39 (WebCore::PODTypeWrapperCacheInfoTraits::emptyValue): 40 (WebCore::PODTypeWrapperCacheInfoTraits::constructDeletedValue): 41 (WebCore::PODTypeWrapperCacheInfoTraits::isDeletedValue): 42 (WebCore::JSSVGDynamicPODTypeWrapperCache::dynamicWrapperHashMap): 43 (WebCore::JSSVGDynamicPODTypeWrapperCache::lookupOrCreateWrapper): 44 (WebCore::JSSVGDynamicPODTypeWrapperCache::forgetWrapper): 45 * bindings/js/JSSVGPointListCustom.cpp: 46 (WebCore::finishGetter): 47 (WebCore::finishSetter): 48 (WebCore::finishSetterReadOnlyResult): 49 (WebCore::JSSVGPointList::initialize): 50 (WebCore::JSSVGPointList::insertItemBefore): 51 (WebCore::JSSVGPointList::replaceItem): 52 (WebCore::JSSVGPointList::appendItem): 53 * bindings/js/JSSVGTransformListCustom.cpp: 54 (WebCore::finishGetter): 55 (WebCore::finishSetter): 56 (WebCore::finishSetterReadOnlyResult): 57 (WebCore::JSSVGTransformList::initialize): 58 (WebCore::JSSVGTransformList::getItem): 59 (WebCore::JSSVGTransformList::insertItemBefore): 60 (WebCore::JSSVGTransformList::replaceItem): 61 (WebCore::JSSVGTransformList::removeItem): 62 (WebCore::JSSVGTransformList::appendItem): 63 * bindings/scripts/CodeGeneratorJS.pm: 64 1 65 2008-07-19 Oliver Hunt <oliver@apple.com> 2 66 -
trunk/WebCore/bindings/js/JSSVGMatrixCustom.cpp
r34587 r35254 1 1 /* 2 * Copyright (C) 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>2 * Copyright (C) 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 21 21 22 22 #if ENABLE(SVG) 23 24 23 #include "JSSVGMatrix.h" 25 24 … … 36 35 37 36 AffineTransform secondMatrix = toSVGMatrix(args[0]); 38 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.multiply(secondMatrix)).get(), m_context.get());37 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.multiply(secondMatrix)).get(), m_context.get()); 39 38 } 40 39 … … 42 41 { 43 42 AffineTransform imp(*impl()); 44 KJS::JSValue* result = toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.inverse()).get(), m_context.get());43 KJS::JSValue* result = toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.inverse()).get(), m_context.get()); 45 44 46 45 if (!imp.isInvertible()) … … 57 56 float y = args[1]->toFloat(exec); 58 57 59 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.translate(x, y)).get(), m_context.get());58 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.translate(x, y)).get(), m_context.get()); 60 59 } 61 60 … … 65 64 66 65 float scaleFactor = args[0]->toFloat(exec); 67 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.scale(scaleFactor)).get(), m_context.get());66 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.scale(scaleFactor)).get(), m_context.get()); 68 67 } 69 68 … … 75 74 float scaleFactorY = args[1]->toFloat(exec); 76 75 77 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.scaleNonUniform(scaleFactorX, scaleFactorY)).get(), m_context.get());76 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.scaleNonUniform(scaleFactorX, scaleFactorY)).get(), m_context.get()); 78 77 } 79 78 … … 83 82 84 83 float angle = args[0]->toFloat(exec); 85 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.rotate(angle)).get(), m_context.get());84 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.rotate(angle)).get(), m_context.get()); 86 85 } 87 86 … … 93 92 float y = args[1]->toFloat(exec); 94 93 95 KJS::JSValue* result = toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.rotateFromVector(x, y)).get(), m_context.get());94 KJS::JSValue* result = toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.rotateFromVector(x, y)).get(), m_context.get()); 96 95 97 96 if (x == 0.0 || y == 0.0) … … 104 103 { 105 104 AffineTransform imp(*impl()); 106 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipX()).get(), m_context.get());105 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.flipX()).get(), m_context.get()); 107 106 } 108 107 … … 110 109 { 111 110 AffineTransform imp(*impl()); 112 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipY()).get(), m_context.get());111 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.flipY()).get(), m_context.get()); 113 112 } 114 113 … … 118 117 119 118 float angle = args[0]->toFloat(exec); 120 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewX(angle)).get(), m_context.get());119 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.skewX(angle)).get(), m_context.get()); 121 120 } 122 121 … … 126 125 127 126 float angle = args[0]->toFloat(exec); 128 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewY(angle)).get(), m_context.get());127 return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.skewY(angle)).get(), m_context.get()); 129 128 } 130 129 … … 132 131 133 132 #endif // ENABLE(SVG) 134 135 // vim:ts=4:noet -
trunk/WebCore/bindings/js/JSSVGPODTypeWrapper.h
r34891 r35254 29 29 30 30 #if ENABLE(SVG) 31 32 31 #include "Frame.h" 33 32 #include "SVGElement.h" … … 48 47 49 48 template<typename PODType, typename PODTypeCreator> 50 class JSSVG PODTypeWrapperCreatorReadWrite: public JSSVGPODTypeWrapper<PODType> {49 class JSSVGDynamicPODTypeWrapper : public JSSVGPODTypeWrapper<PODType> { 51 50 public: 52 51 typedef PODType (PODTypeCreator::*GetterMethod)() const; 53 52 typedef void (PODTypeCreator::*SetterMethod)(PODType); 54 53 55 static PassRefPtr<JSSVG PODTypeWrapperCreatorReadWrite> create(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)56 { 57 return adoptRef(new JSSVG PODTypeWrapperCreatorReadWrite(creator, getter, setter));54 static PassRefPtr<JSSVGDynamicPODTypeWrapper> create(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter) 55 { 56 return adoptRef(new JSSVGDynamicPODTypeWrapper(creator, getter, setter)); 58 57 } 59 58 60 59 // Getter wrapper 61 virtual operator PODType() { return (m_creator.get()->*m_getter)(); } 60 virtual operator PODType() 61 { 62 return (m_creator.get()->*m_getter)(); 63 } 62 64 63 65 // Setter wrapper … … 74 76 75 77 private: 76 JSSVG PODTypeWrapperCreatorReadWrite(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)78 JSSVGDynamicPODTypeWrapper(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter) 77 79 : m_creator(creator) 78 80 , m_getter(getter) … … 91 93 92 94 template<typename PODType> 93 class JSSVG PODTypeWrapperCreatorReadOnly: public JSSVGPODTypeWrapper<PODType> {94 public: 95 static PassRefPtr<JSSVG PODTypeWrapperCreatorReadOnly> create(PODType type)96 { 97 return adoptRef(new JSSVG PODTypeWrapperCreatorReadOnly(type));95 class JSSVGStaticPODTypeWrapper : public JSSVGPODTypeWrapper<PODType> { 96 public: 97 static PassRefPtr<JSSVGStaticPODTypeWrapper> create(PODType type) 98 { 99 return adoptRef(new JSSVGStaticPODTypeWrapper(type)); 98 100 } 99 101 100 102 // Getter wrapper 101 virtual operator PODType() { return m_podType; } 103 virtual operator PODType() 104 { 105 return m_podType; 106 } 102 107 103 108 // Setter wrapper … … 108 113 109 114 private: 110 JSSVG PODTypeWrapperCreatorReadOnly(PODType type)115 JSSVGStaticPODTypeWrapper(PODType type) 111 116 : m_podType(type) 112 117 { … … 122 127 class JSSVGPODTypeWrapperCreatorForList : public JSSVGPODTypeWrapper<PODType> { 123 128 public: 129 typedef SVGPODListItem<PODType> PODListItemPtrType; 130 124 131 typedef PODType (SVGPODListItem<PODType>::*GetterMethod)() const; 125 132 typedef void (SVGPODListItem<PODType>::*SetterMethod)(PODType); 126 133 127 static PassRefPtr<JSSVGPODTypeWrapperCreatorForList> create(PassRefPtr< SVGPODListItem<PODType>> creator, const QualifiedName& attributeName)134 static PassRefPtr<JSSVGPODTypeWrapperCreatorForList> create(PassRefPtr<PODListItemPtrType> creator, const QualifiedName& attributeName) 128 135 { 129 136 return adoptRef(new JSSVGPODTypeWrapperCreatorForList(creator, attributeName)); … … 131 138 132 139 // Getter wrapper 133 virtual operator PODType() { return (m_creator.get()->*m_getter)(); } 140 virtual operator PODType() 141 { 142 return (m_creator.get()->*m_getter)(); 143 } 134 144 135 145 // Setter wrapper … … 146 156 147 157 private: 148 JSSVGPODTypeWrapperCreatorForList(PassRefPtr< SVGPODListItem<PODType>> creator, const QualifiedName& attributeName)158 JSSVGPODTypeWrapperCreatorForList(PassRefPtr<PODListItemPtrType> creator, const QualifiedName& attributeName) 149 159 : m_creator(creator) 150 , m_getter(& SVGPODListItem<PODType>::value)151 , m_setter(& SVGPODListItem<PODType>::setValue)160 , m_getter(&PODListItemPtrType::value) 161 , m_setter(&PODListItemPtrType::setValue) 152 162 , m_associatedAttributeName(attributeName) 153 163 { … … 158 168 159 169 // Update callbacks 160 RefPtr< SVGPODListItem<PODType>> m_creator;170 RefPtr<PODListItemPtrType> m_creator; 161 171 GetterMethod m_getter; 162 172 SetterMethod m_setter; … … 166 176 // Caching facilities 167 177 template<typename PODType, typename PODTypeCreator> 168 struct PODType ReadWriteHashInfo {178 struct PODTypeWrapperCacheInfo { 169 179 typedef PODType (PODTypeCreator::*GetterMethod)() const; 170 180 typedef void (PODTypeCreator::*SetterMethod)(PODType); 171 181 172 182 // Empty value 173 PODType ReadWriteHashInfo()183 PODTypeWrapperCacheInfo() 174 184 : creator(0) 175 185 , getter(0) … … 179 189 180 190 // Deleted value 181 PODType ReadWriteHashInfo(WTF::HashTableDeletedValueType)191 PODTypeWrapperCacheInfo(WTF::HashTableDeletedValueType) 182 192 : creator(reinterpret_cast<PODTypeCreator*>(-1)) 183 193 { … … 188 198 } 189 199 190 PODType ReadWriteHashInfo(PODTypeCreator* _creator, GetterMethod _getter, SetterMethod _setter)200 PODTypeWrapperCacheInfo(PODTypeCreator* _creator, GetterMethod _getter, SetterMethod _setter) 191 201 : creator(_creator) 192 202 , getter(_getter) … … 197 207 } 198 208 199 bool operator==(const PODType ReadWriteHashInfo& other) const209 bool operator==(const PODTypeWrapperCacheInfo& other) const 200 210 { 201 211 return creator == other.creator && getter == other.getter && setter == other.setter; … … 208 218 209 219 template<typename PODType, typename PODTypeCreator> 210 struct PODTypeReadWriteHashInfoHash { 211 static unsigned hash(const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& info) 212 { 213 return StringImpl::computeHash(reinterpret_cast<const UChar*>(&info), sizeof(PODTypeReadWriteHashInfo<PODType, PODTypeCreator>) / sizeof(UChar)); 214 } 215 216 static bool equal(const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& a, const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& b) 220 struct PODTypeWrapperCacheInfoHash { 221 typedef PODTypeWrapperCacheInfo<PODType, PODTypeCreator> CacheInfo; 222 223 static unsigned hash(const CacheInfo& info) 224 { 225 return StringImpl::computeHash(reinterpret_cast<const UChar*>(&info), sizeof(CacheInfo) / sizeof(UChar)); 226 } 227 228 static bool equal(const CacheInfo& a, const CacheInfo& b) 217 229 { 218 230 return a == b; … … 223 235 224 236 template<typename PODType, typename PODTypeCreator> 225 struct PODTypeReadWriteHashInfoTraits : WTF::GenericHashTraits<PODTypeReadWriteHashInfo<PODType, PODTypeCreator> > { 237 struct PODTypeWrapperCacheInfoTraits : WTF::GenericHashTraits<PODTypeWrapperCacheInfo<PODType, PODTypeCreator> > { 238 typedef PODTypeWrapperCacheInfo<PODType, PODTypeCreator> CacheInfo; 239 226 240 static const bool emptyValueIsZero = true; 227 241 static const bool needsDestruction = false; 228 242 229 static const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& emptyValue()230 { 231 static PODTypeReadWriteHashInfo<PODType, PODTypeCreator>key;243 static const CacheInfo& emptyValue() 244 { 245 static CacheInfo key; 232 246 return key; 233 247 } 234 248 235 static void constructDeletedValue(PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& slot) 236 { 237 new (&slot) PODTypeReadWriteHashInfo<PODType, PODTypeCreator>(WTF::HashTableDeletedValue); 238 } 239 static bool isDeletedValue(const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& value) 249 static void constructDeletedValue(CacheInfo& slot) 250 { 251 new (&slot) CacheInfo(WTF::HashTableDeletedValue); 252 } 253 254 static bool isDeletedValue(const CacheInfo& value) 240 255 { 241 256 return value.isHashTableDeletedValue(); … … 244 259 245 260 template<typename PODType, typename PODTypeCreator> 246 class JSSVG PODTypeWrapperCache {261 class JSSVGDynamicPODTypeWrapperCache { 247 262 public: 248 263 typedef PODType (PODTypeCreator::*GetterMethod)() const; 249 264 typedef void (PODTypeCreator::*SetterMethod)(PODType); 250 265 251 typedef HashMap<PODTypeReadWriteHashInfo<PODType, PODTypeCreator>, JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>*, PODTypeReadWriteHashInfoHash<PODType, PODTypeCreator>, PODTypeReadWriteHashInfoTraits<PODType, PODTypeCreator> > ReadWriteHashMap; 252 typedef typename ReadWriteHashMap::const_iterator ReadWriteHashMapIterator; 253 254 static ReadWriteHashMap& readWriteHashMap() 255 { 256 static ReadWriteHashMap _readWriteHashMap; 257 return _readWriteHashMap; 266 typedef PODTypeWrapperCacheInfo<PODType, PODTypeCreator> CacheInfo; 267 typedef PODTypeWrapperCacheInfoHash<PODType, PODTypeCreator> CacheInfoHash; 268 typedef PODTypeWrapperCacheInfoTraits<PODType, PODTypeCreator> CacheInfoTraits; 269 270 typedef JSSVGPODTypeWrapper<PODType> WrapperBase; 271 typedef JSSVGDynamicPODTypeWrapper<PODType, PODTypeCreator> DynamicWrapper; 272 typedef HashMap<CacheInfo, DynamicWrapper*, CacheInfoHash, CacheInfoTraits> DynamicWrapperHashMap; 273 typedef typename DynamicWrapperHashMap::const_iterator DynamicWrapperHashMapIterator; 274 275 static DynamicWrapperHashMap& dynamicWrapperHashMap() 276 { 277 static DynamicWrapperHashMap s_dynamicWrapperHashMap; 278 return s_dynamicWrapperHashMap; 258 279 } 259 280 260 281 // Used for readwrite attributes only 261 static PassRefPtr< JSSVGPODTypeWrapper<PODType>> lookupOrCreateWrapper(PODTypeCreator* creator, GetterMethod getter, SetterMethod setter)262 { 263 ReadWriteHashMap& map(readWriteHashMap());264 PODTypeReadWriteHashInfo<PODType, PODTypeCreator>info(creator, getter, setter);282 static PassRefPtr<WrapperBase> lookupOrCreateWrapper(PODTypeCreator* creator, GetterMethod getter, SetterMethod setter) 283 { 284 DynamicWrapperHashMap& map(dynamicWrapperHashMap()); 285 CacheInfo info(creator, getter, setter); 265 286 266 287 if (map.contains(info)) 267 288 return map.get(info); 268 289 269 RefPtr< JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator> > wrapper = JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>::create(creator, getter, setter);290 RefPtr<DynamicWrapper> wrapper = DynamicWrapper::create(creator, getter, setter); 270 291 map.set(info, wrapper.get()); 271 292 return wrapper.release(); 272 293 } 273 294 274 static void forgetWrapper( JSSVGPODTypeWrapper<PODType>* wrapper)275 { 276 ReadWriteHashMap& map(readWriteHashMap());277 278 ReadWriteHashMapIterator it = map.begin();279 ReadWriteHashMapIterator end = map.end();295 static void forgetWrapper(WrapperBase* wrapper) 296 { 297 DynamicWrapperHashMap& map(dynamicWrapperHashMap()); 298 299 DynamicWrapperHashMapIterator it = map.begin(); 300 DynamicWrapperHashMapIterator end = map.end(); 280 301 281 302 for (; it != end; ++it) { -
trunk/WebCore/bindings/js/JSSVGPointListCustom.cpp
r34587 r35254 20 20 21 21 #include "config.h" 22 #include "JSSVGPointList.h"23 22 24 23 #if ENABLE(SVG) 24 #include "JSSVGPointList.h" 25 25 26 26 #include "JSSVGPoint.h" … … 31 31 namespace WebCore { 32 32 33 typedef SVGList<RefPtr<SVGPODListItem<FloatPoint> > > SVGPointListBase; 33 typedef SVGPODListItem<FloatPoint> PODListItem; 34 typedef SVGList<RefPtr<PODListItem> > SVGPointListBase; 34 35 35 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr< SVGPODListItem<FloatPoint>> item)36 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem > item) 36 37 { 37 38 if (ec) { … … 42 43 } 43 44 44 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr< SVGPODListItem<FloatPoint>> item)45 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem > item) 45 46 { 46 47 if (ec) { … … 53 54 } 54 55 55 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr< SVGPODListItem<FloatPoint>> item)56 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem> item) 56 57 { 57 58 if (ec) { … … 60 61 } 61 62 context->svgAttributeChanged(list->associatedAttributeName()); 62 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<FloatPoint>::create(*item).get(), context);63 return toJS(exec, JSSVGStaticPODTypeWrapper<FloatPoint>::create(*item).get(), context); 63 64 } 64 65 … … 77 78 SVGPointListBase* listImp = impl(); 78 79 return finishSetter(exec, ec, context(), impl(), 79 listImp->initialize( SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), ec));80 listImp->initialize(PODListItem::copy(toSVGPoint(args[0])), ec)); 80 81 } 81 82 … … 107 108 SVGPointListBase* listImp = impl(); 108 109 return finishSetter(exec, ec, context(), impl(), 109 listImp->insertItemBefore( SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), index, ec));110 listImp->insertItemBefore(PODListItem::copy(toSVGPoint(args[0])), index, ec)); 110 111 } 111 112 … … 122 123 SVGPointListBase* listImp = impl(); 123 124 return finishSetter(exec, ec, context(), impl(), 124 listImp->replaceItem( SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), index, ec));125 listImp->replaceItem(PODListItem::copy(toSVGPoint(args[0])), index, ec)); 125 126 } 126 127 … … 145 146 SVGPointListBase* listImp = impl(); 146 147 return finishSetter(exec, ec, context(), impl(), 147 listImp->appendItem( SVGPODListItem<FloatPoint>::copy(toSVGPoint(args[0])), ec));148 listImp->appendItem(PODListItem::copy(toSVGPoint(args[0])), ec)); 148 149 } 149 150 -
trunk/WebCore/bindings/js/JSSVGTransformListCustom.cpp
r34587 r35254 20 20 21 21 #include "config.h" 22 #include "JSSVGTransformList.h"23 22 24 23 #if ENABLE(SVG) 24 #include "JSSVGTransformList.h" 25 25 26 26 #include "JSSVGTransform.h" … … 31 31 namespace WebCore { 32 32 33 typedef SVGList<RefPtr<SVGPODListItem<SVGTransform> > > SVGTransformListBase; 33 typedef SVGPODListItem<SVGTransform> PODListItem; 34 typedef SVGList<RefPtr<PODListItem> > SVGTransformListBase; 34 35 35 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr< SVGPODListItem<SVGTransform>> item)36 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item) 36 37 { 37 38 if (ec) { … … 42 43 } 43 44 44 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr< SVGPODListItem<SVGTransform>> item)45 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item) 45 46 { 46 47 if (ec) { … … 53 54 } 54 55 55 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr< SVGPODListItem<SVGTransform>> item)56 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item) 56 57 { 57 58 if (ec) { … … 60 61 } 61 62 context->svgAttributeChanged(list->associatedAttributeName()); 62 return toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<SVGTransform>::create(*item).get(), context);63 return toJS(exec, JSSVGStaticPODTypeWrapper<SVGTransform>::create(*item).get(), context); 63 64 } 64 65 … … 77 78 SVGTransformListBase* listImp = impl(); 78 79 return finishSetter(exec, ec, context(), impl(), 79 listImp->initialize( SVGPODListItem<SVGTransform>::copy(toSVGTransform(args[0])), ec));80 listImp->initialize(PODListItem::copy(toSVGTransform(args[0])), ec)); 80 81 } 81 82 … … 83 84 { 84 85 bool indexOk; 85 unsigned index = args[0]->to Int32(exec, indexOk);86 unsigned index = args[0]->toUInt32(exec, indexOk); 86 87 if (!indexOk) { 87 88 setDOMException(exec, TYPE_MISMATCH_ERR); … … 98 99 { 99 100 bool indexOk; 100 unsigned index = args[1]->to Int32(exec, indexOk);101 unsigned index = args[1]->toUInt32(exec, indexOk); 101 102 if (!indexOk) { 102 103 setDOMException(exec, TYPE_MISMATCH_ERR); … … 107 108 SVGTransformListBase* listImp = impl(); 108 109 return finishSetter(exec, ec, context(), impl(), 109 listImp->insertItemBefore( SVGPODListItem<SVGTransform>::copy(toSVGTransform(args[0])), index, ec));110 listImp->insertItemBefore(PODListItem::copy(toSVGTransform(args[0])), index, ec)); 110 111 } 111 112 … … 113 114 { 114 115 bool indexOk; 115 unsigned index = args[1]->to Int32(exec, indexOk);116 unsigned index = args[1]->toUInt32(exec, indexOk); 116 117 if (!indexOk) { 117 118 setDOMException(exec, TYPE_MISMATCH_ERR); … … 122 123 SVGTransformListBase* listImp = impl(); 123 124 return finishSetter(exec, ec, context(), impl(), 124 listImp->replaceItem( SVGPODListItem<SVGTransform>::copy(toSVGTransform(args[0])), index, ec));125 listImp->replaceItem(PODListItem::copy(toSVGTransform(args[0])), index, ec)); 125 126 } 126 127 … … 128 129 { 129 130 bool indexOk; 130 unsigned index = args[0]->to Int32(exec, indexOk);131 unsigned index = args[0]->toUInt32(exec, indexOk); 131 132 if (!indexOk) { 132 133 setDOMException(exec, TYPE_MISMATCH_ERR); … … 145 146 SVGTransformListBase* listImp = impl(); 146 147 return finishSetter(exec, ec, context(), impl(), 147 listImp->appendItem( SVGPODListItem<SVGTransform>::copy(toSVGTransform(args[0])), ec));148 listImp->appendItem(PODListItem::copy(toSVGTransform(args[0])), ec)); 148 149 } 149 150 -
trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm
r35166 r35254 1 1 # 2 # Copyright (C) 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>2 # Copyright (C) 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3 3 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> 4 4 # Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> … … 950 950 # Special case for JSSVGNumber 951 951 if ($codeGenerator->IsSVGAnimatedType($animatedType) and $podType ne "float") { 952 push(@implContent, " JSSVG PODTypeWrapperCache<$podType, $animatedType>::forgetWrapper(m_impl.get());\n");952 push(@implContent, " JSSVGDynamicPODTypeWrapperCache<$podType, $animatedType>::forgetWrapper(m_impl.get());\n"); 953 953 } 954 954 } … … 1551 1551 if ($implClassNameForValueConversion eq "") { 1552 1552 if (IsSVGTypeNeedingContextParameter($implClassName)) { 1553 return "toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), castedThisObj->context())" if $inFunctionCall eq 1;1553 return "toJS(exec, JSSVGStaticPODTypeWrapper<$nativeType>::create($value).get(), castedThisObj->context())" if $inFunctionCall eq 1; 1554 1554 1555 1555 # Special case: SVGZoomEvent - it doesn't have a context, but it's no problem, as there are no readwrite props 1556 return "toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), 0)" if $implClassName eq "SVGZoomEvent";1557 return "toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), context())";1556 return "toJS(exec, JSSVGStaticPODTypeWrapper<$nativeType>::create($value).get(), 0)" if $implClassName eq "SVGZoomEvent"; 1557 return "toJS(exec, JSSVGStaticPODTypeWrapper<$nativeType>::create($value).get(), context())"; 1558 1558 } else { 1559 return "toJS(exec, JSSVG PODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), imp)";1559 return "toJS(exec, JSSVGStaticPODTypeWrapper<$nativeType>::create($value).get(), imp)"; 1560 1560 } 1561 1561 } else { # These classes, always have a m_context pointer! 1562 return "toJS(exec, JSSVG PODTypeWrapperCache<$nativeType, $implClassNameForValueConversion>::lookupOrCreateWrapper(imp, &${implClassNameForValueConversion}::$getter, &${implClassNameForValueConversion}::$setter).get(), context())";1562 return "toJS(exec, JSSVGDynamicPODTypeWrapperCache<$nativeType, $implClassNameForValueConversion>::lookupOrCreateWrapper(imp, &${implClassNameForValueConversion}::$getter, &${implClassNameForValueConversion}::$setter).get(), context())"; 1563 1563 } 1564 1564 }
Note: See TracChangeset
for help on using the changeset viewer.