Changeset 35254 in webkit


Ignore:
Timestamp:
Jul 20, 2008 1:40:49 PM (16 years ago)
Author:
Nikolas Zimmermann
Message:

Reviewed by Oliver.
Cleanup JSSVGPODTypeWrapper code.

Location:
trunk/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r35253 r35254  
     12008-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
    1652008-07-19  Oliver Hunt  <oliver@apple.com>
    266
  • trunk/WebCore/bindings/js/JSSVGMatrixCustom.cpp

    r34587 r35254  
    11/*
    2  * Copyright (C) 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
     2 * Copyright (C) 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
    33 *
    44 * This library is free software; you can redistribute it and/or
     
    2121
    2222#if ENABLE(SVG)
    23 
    2423#include "JSSVGMatrix.h"
    2524
     
    3635
    3736    AffineTransform secondMatrix = toSVGMatrix(args[0]);   
    38     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.multiply(secondMatrix)).get(), m_context.get());
     37    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.multiply(secondMatrix)).get(), m_context.get());
    3938}
    4039
     
    4241{
    4342    AffineTransform imp(*impl());
    44     KJS::JSValue* result = toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.inverse()).get(), m_context.get());
     43    KJS::JSValue* result = toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.inverse()).get(), m_context.get());
    4544
    4645    if (!imp.isInvertible())
     
    5756    float y = args[1]->toFloat(exec);
    5857
    59     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<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());
    6059}
    6160
     
    6564
    6665    float scaleFactor = args[0]->toFloat(exec);
    67     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.scale(scaleFactor)).get(), m_context.get());
     66    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.scale(scaleFactor)).get(), m_context.get());
    6867}
    6968
     
    7574    float scaleFactorY = args[1]->toFloat(exec);
    7675
    77     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<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());
    7877}
    7978
     
    8382
    8483    float angle = args[0]->toFloat(exec);
    85     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.rotate(angle)).get(), m_context.get());
     84    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.rotate(angle)).get(), m_context.get());
    8685}
    8786
     
    9392    float y = args[1]->toFloat(exec);
    9493
    95     KJS::JSValue* result = toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<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());
    9695
    9796    if (x == 0.0 || y == 0.0)
     
    104103{
    105104    AffineTransform imp(*impl());
    106     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipX()).get(), m_context.get());
     105    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.flipX()).get(), m_context.get());
    107106}
    108107
     
    110109{
    111110    AffineTransform imp(*impl());
    112     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.flipY()).get(), m_context.get());
     111    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.flipY()).get(), m_context.get());
    113112}
    114113
     
    118117
    119118    float angle = args[0]->toFloat(exec);
    120     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewX(angle)).get(), m_context.get());
     119    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.skewX(angle)).get(), m_context.get());
    121120}
    122121
     
    126125
    127126    float angle = args[0]->toFloat(exec);
    128     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<AffineTransform>::create(imp.skewY(angle)).get(), m_context.get());
     127    return toJS(exec, JSSVGStaticPODTypeWrapper<AffineTransform>::create(imp.skewY(angle)).get(), m_context.get());
    129128}
    130129
     
    132131
    133132#endif // ENABLE(SVG)
    134 
    135 // vim:ts=4:noet
  • trunk/WebCore/bindings/js/JSSVGPODTypeWrapper.h

    r34891 r35254  
    2929
    3030#if ENABLE(SVG)
    31 
    3231#include "Frame.h"
    3332#include "SVGElement.h"
     
    4847
    4948template<typename PODType, typename PODTypeCreator>
    50 class JSSVGPODTypeWrapperCreatorReadWrite : public JSSVGPODTypeWrapper<PODType> {
     49class JSSVGDynamicPODTypeWrapper : public JSSVGPODTypeWrapper<PODType> {
    5150public:
    5251    typedef PODType (PODTypeCreator::*GetterMethod)() const;
    5352    typedef void (PODTypeCreator::*SetterMethod)(PODType);
    5453
    55     static PassRefPtr<JSSVGPODTypeWrapperCreatorReadWrite> create(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
    56     {
    57         return adoptRef(new JSSVGPODTypeWrapperCreatorReadWrite(creator, getter, setter));
     54    static PassRefPtr<JSSVGDynamicPODTypeWrapper> create(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
     55    {
     56        return adoptRef(new JSSVGDynamicPODTypeWrapper(creator, getter, setter));
    5857    }
    5958
    6059    // 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    }
    6264
    6365    // Setter wrapper
     
    7476
    7577private:
    76     JSSVGPODTypeWrapperCreatorReadWrite(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
     78    JSSVGDynamicPODTypeWrapper(PassRefPtr<PODTypeCreator> creator, GetterMethod getter, SetterMethod setter)
    7779        : m_creator(creator)
    7880        , m_getter(getter)
     
    9193
    9294template<typename PODType>
    93 class JSSVGPODTypeWrapperCreatorReadOnly : public JSSVGPODTypeWrapper<PODType> {
    94 public:
    95     static PassRefPtr<JSSVGPODTypeWrapperCreatorReadOnly> create(PODType type)
    96     {
    97         return adoptRef(new JSSVGPODTypeWrapperCreatorReadOnly(type));
     95class JSSVGStaticPODTypeWrapper : public JSSVGPODTypeWrapper<PODType> {
     96public:
     97    static PassRefPtr<JSSVGStaticPODTypeWrapper> create(PODType type)
     98    {
     99        return adoptRef(new JSSVGStaticPODTypeWrapper(type));
    98100    }
    99101
    100102    // Getter wrapper
    101     virtual operator PODType() { return m_podType; }
     103    virtual operator PODType()
     104    {
     105        return m_podType;
     106    }
    102107
    103108    // Setter wrapper
     
    108113
    109114private:
    110     JSSVGPODTypeWrapperCreatorReadOnly(PODType type)
     115    JSSVGStaticPODTypeWrapper(PODType type)
    111116        : m_podType(type)
    112117    {
     
    122127class JSSVGPODTypeWrapperCreatorForList : public JSSVGPODTypeWrapper<PODType> {
    123128public:
     129    typedef SVGPODListItem<PODType> PODListItemPtrType;
     130
    124131    typedef PODType (SVGPODListItem<PODType>::*GetterMethod)() const;
    125132    typedef void (SVGPODListItem<PODType>::*SetterMethod)(PODType);
    126133
    127     static PassRefPtr<JSSVGPODTypeWrapperCreatorForList> create(PassRefPtr<SVGPODListItem<PODType> > creator, const QualifiedName& attributeName)
     134    static PassRefPtr<JSSVGPODTypeWrapperCreatorForList> create(PassRefPtr<PODListItemPtrType> creator, const QualifiedName& attributeName)
    128135    {
    129136        return adoptRef(new JSSVGPODTypeWrapperCreatorForList(creator, attributeName));
     
    131138
    132139    // 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    }
    134144
    135145    // Setter wrapper
     
    146156
    147157private:
    148     JSSVGPODTypeWrapperCreatorForList(PassRefPtr<SVGPODListItem<PODType> > creator, const QualifiedName& attributeName)
     158    JSSVGPODTypeWrapperCreatorForList(PassRefPtr<PODListItemPtrType> creator, const QualifiedName& attributeName)
    149159        : 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)
    152162        , m_associatedAttributeName(attributeName)
    153163    {
     
    158168
    159169    // Update callbacks
    160     RefPtr<SVGPODListItem<PODType> > m_creator;
     170    RefPtr<PODListItemPtrType> m_creator;
    161171    GetterMethod m_getter;
    162172    SetterMethod m_setter;
     
    166176// Caching facilities
    167177template<typename PODType, typename PODTypeCreator>
    168 struct PODTypeReadWriteHashInfo {
     178struct PODTypeWrapperCacheInfo {
    169179    typedef PODType (PODTypeCreator::*GetterMethod)() const;
    170180    typedef void (PODTypeCreator::*SetterMethod)(PODType);
    171181
    172182    // Empty value
    173     PODTypeReadWriteHashInfo()
     183    PODTypeWrapperCacheInfo()
    174184        : creator(0)
    175185        , getter(0)
     
    179189
    180190    // Deleted value
    181     PODTypeReadWriteHashInfo(WTF::HashTableDeletedValueType)
     191    PODTypeWrapperCacheInfo(WTF::HashTableDeletedValueType)
    182192        : creator(reinterpret_cast<PODTypeCreator*>(-1))
    183193    {
     
    188198    }
    189199
    190     PODTypeReadWriteHashInfo(PODTypeCreator* _creator, GetterMethod _getter, SetterMethod _setter)
     200    PODTypeWrapperCacheInfo(PODTypeCreator* _creator, GetterMethod _getter, SetterMethod _setter)
    191201        : creator(_creator)
    192202        , getter(_getter)
     
    197207    }
    198208
    199     bool operator==(const PODTypeReadWriteHashInfo& other) const
     209    bool operator==(const PODTypeWrapperCacheInfo& other) const
    200210    {
    201211        return creator == other.creator && getter == other.getter && setter == other.setter;
     
    208218
    209219template<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)
     220struct 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)
    217229    {
    218230        return a == b;
     
    223235
    224236template<typename PODType, typename PODTypeCreator>
    225 struct PODTypeReadWriteHashInfoTraits : WTF::GenericHashTraits<PODTypeReadWriteHashInfo<PODType, PODTypeCreator> > {
     237struct PODTypeWrapperCacheInfoTraits : WTF::GenericHashTraits<PODTypeWrapperCacheInfo<PODType, PODTypeCreator> > {
     238    typedef PODTypeWrapperCacheInfo<PODType, PODTypeCreator> CacheInfo;
     239
    226240    static const bool emptyValueIsZero = true;
    227241    static const bool needsDestruction = false;
    228242
    229     static const PODTypeReadWriteHashInfo<PODType, PODTypeCreator>& emptyValue()
    230     {
    231         static PODTypeReadWriteHashInfo<PODType, PODTypeCreator> key;
     243    static const CacheInfo& emptyValue()
     244    {
     245        static CacheInfo key;
    232246        return key;
    233247    }
    234248
    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)
    240255    {
    241256        return value.isHashTableDeletedValue();
     
    244259
    245260template<typename PODType, typename PODTypeCreator>
    246 class JSSVGPODTypeWrapperCache {
     261class JSSVGDynamicPODTypeWrapperCache {
    247262public:
    248263    typedef PODType (PODTypeCreator::*GetterMethod)() const;
    249264    typedef void (PODTypeCreator::*SetterMethod)(PODType);
    250265
    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;
    258279    }
    259280
    260281    // 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);
    265286
    266287        if (map.contains(info))
    267288            return map.get(info);
    268289
    269         RefPtr<JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator> > wrapper = JSSVGPODTypeWrapperCreatorReadWrite<PODType, PODTypeCreator>::create(creator, getter, setter);
     290        RefPtr<DynamicWrapper> wrapper = DynamicWrapper::create(creator, getter, setter);
    270291        map.set(info, wrapper.get());
    271292        return wrapper.release();
    272293    }
    273294
    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();
    280301
    281302        for (; it != end; ++it) {
  • trunk/WebCore/bindings/js/JSSVGPointListCustom.cpp

    r34587 r35254  
    2020
    2121#include "config.h"
    22 #include "JSSVGPointList.h"
    2322
    2423#if ENABLE(SVG)
     24#include "JSSVGPointList.h"
    2525
    2626#include "JSSVGPoint.h"
     
    3131namespace WebCore {
    3232
    33 typedef SVGList<RefPtr<SVGPODListItem<FloatPoint> > > SVGPointListBase;
     33typedef SVGPODListItem<FloatPoint> PODListItem;
     34typedef SVGList<RefPtr<PODListItem> > SVGPointListBase;
    3435
    35 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
     36static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem > item)
    3637{
    3738    if (ec) {
     
    4243}
    4344
    44 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
     45static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem > item)
    4546{
    4647    if (ec) {
     
    5354}
    5455
    55 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<SVGPODListItem<FloatPoint> > item)
     56static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGPointList* list, PassRefPtr<PODListItem> item)
    5657{
    5758    if (ec) {
     
    6061    }
    6162    context->svgAttributeChanged(list->associatedAttributeName());
    62     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<FloatPoint>::create(*item).get(), context);
     63    return toJS(exec, JSSVGStaticPODTypeWrapper<FloatPoint>::create(*item).get(), context);
    6364}
    6465
     
    7778    SVGPointListBase* listImp = impl();
    7879    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));
    8081}
    8182
     
    107108    SVGPointListBase* listImp = impl();
    108109    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));
    110111}
    111112
     
    122123    SVGPointListBase* listImp = impl();
    123124    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));
    125126}
    126127
     
    145146    SVGPointListBase* listImp = impl();
    146147    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));
    148149}
    149150
  • trunk/WebCore/bindings/js/JSSVGTransformListCustom.cpp

    r34587 r35254  
    2020
    2121#include "config.h"
    22 #include "JSSVGTransformList.h"
    2322
    2423#if ENABLE(SVG)
     24#include "JSSVGTransformList.h"
    2525
    2626#include "JSSVGTransform.h"
     
    3131namespace WebCore {
    3232
    33 typedef SVGList<RefPtr<SVGPODListItem<SVGTransform> > > SVGTransformListBase;
     33typedef SVGPODListItem<SVGTransform> PODListItem;
     34typedef SVGList<RefPtr<PODListItem> > SVGTransformListBase;
    3435
    35 static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<SVGPODListItem<SVGTransform> > item)
     36static JSValue* finishGetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item)
    3637{
    3738    if (ec) {
     
    4243}
    4344
    44 static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<SVGPODListItem<SVGTransform> > item)
     45static JSValue* finishSetter(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item)
    4546{
    4647    if (ec) {
     
    5354}
    5455
    55 static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<SVGPODListItem<SVGTransform> > item)
     56static JSValue* finishSetterReadOnlyResult(ExecState* exec, ExceptionCode& ec, SVGElement* context, SVGTransformList* list, PassRefPtr<PODListItem> item)
    5657{
    5758    if (ec) {
     
    6061    }
    6162    context->svgAttributeChanged(list->associatedAttributeName());
    62     return toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<SVGTransform>::create(*item).get(), context);
     63    return toJS(exec, JSSVGStaticPODTypeWrapper<SVGTransform>::create(*item).get(), context);
    6364}
    6465
     
    7778    SVGTransformListBase* listImp = impl();
    7879    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));
    8081}
    8182
     
    8384{
    8485    bool indexOk;
    85     unsigned index = args[0]->toInt32(exec, indexOk);
     86    unsigned index = args[0]->toUInt32(exec, indexOk);
    8687    if (!indexOk) {
    8788        setDOMException(exec, TYPE_MISMATCH_ERR);
     
    9899{
    99100    bool indexOk;
    100     unsigned index = args[1]->toInt32(exec, indexOk);
     101    unsigned index = args[1]->toUInt32(exec, indexOk);
    101102    if (!indexOk) {
    102103        setDOMException(exec, TYPE_MISMATCH_ERR);
     
    107108    SVGTransformListBase* listImp = impl();
    108109    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));
    110111}
    111112
     
    113114{
    114115    bool indexOk;
    115     unsigned index = args[1]->toInt32(exec, indexOk);
     116    unsigned index = args[1]->toUInt32(exec, indexOk);
    116117    if (!indexOk) {
    117118        setDOMException(exec, TYPE_MISMATCH_ERR);
     
    122123    SVGTransformListBase* listImp = impl();
    123124    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));
    125126}
    126127
     
    128129{
    129130    bool indexOk;
    130     unsigned index = args[0]->toInt32(exec, indexOk);
     131    unsigned index = args[0]->toUInt32(exec, indexOk);
    131132    if (!indexOk) {
    132133        setDOMException(exec, TYPE_MISMATCH_ERR);
     
    145146    SVGTransformListBase* listImp = impl();
    146147    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));
    148149}
    149150
  • trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r35166 r35254  
    11#
    2 # Copyright (C) 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
     2# Copyright (C) 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
    33# Copyright (C) 2006 Anders Carlsson <andersca@mac.com>
    44# Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org>
     
    950950                # Special case for JSSVGNumber
    951951                if ($codeGenerator->IsSVGAnimatedType($animatedType) and $podType ne "float") {
    952                     push(@implContent, "    JSSVGPODTypeWrapperCache<$podType, $animatedType>::forgetWrapper(m_impl.get());\n");
     952                    push(@implContent, "    JSSVGDynamicPODTypeWrapperCache<$podType, $animatedType>::forgetWrapper(m_impl.get());\n");
    953953                }
    954954            }
     
    15511551        if ($implClassNameForValueConversion eq "") {
    15521552            if (IsSVGTypeNeedingContextParameter($implClassName)) {
    1553                 return "toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<$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;
    15541554
    15551555                # Special case: SVGZoomEvent - it doesn't have a context, but it's no problem, as there are no readwrite props
    1556                 return "toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), 0)" if $implClassName eq "SVGZoomEvent";
    1557                 return "toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<$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())";
    15581558            } else {
    1559                 return "toJS(exec, JSSVGPODTypeWrapperCreatorReadOnly<$nativeType>::create($value).get(), imp)";
     1559                return "toJS(exec, JSSVGStaticPODTypeWrapper<$nativeType>::create($value).get(), imp)";
    15601560            }
    15611561        } else { # These classes, always have a m_context pointer!
    1562             return "toJS(exec, JSSVGPODTypeWrapperCache<$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())";
    15631563        }
    15641564    }
Note: See TracChangeset for help on using the changeset viewer.