static v8::Handle<v8::Value> removeItemCallback(const v8::Arguments& args) { INC_STATS("DOM.SVGPointList.removeItem"); SVGPointList* imp = V8SVGPointList::toNative(args.Holder()); ExceptionCode ec = 0; { EXCEPTION_BLOCK(unsigned, index, toUInt32(args[0])); SVGList<RefPtr<SVGPODListItem<FloatPoint> > >* listImp = imp; RefPtr<SVGPODListItem<FloatPoint> > result = listImp->removeItem(index, ec); if (UNLIKELY(ec)) goto fail; RefPtr<V8SVGPODTypeWrapper<FloatPoint> > wrapper = V8SVGPODTypeWrapperCreatorForList<FloatPoint>::create(result, imp->associatedAttributeName()); SVGElement* context = V8Proxy::svgContext(imp); V8Proxy::setSVGContext(wrapper.get(), context); context->svgAttributeChanged(imp->associatedAttributeName()); return toV8(wrapper.release()); } fail: V8Proxy::setDOMException(ec); return v8::Handle<v8::Value>(); }
JSValue* JSSVGTransformList::removeItem(ExecState* exec, const List& args) { ExceptionCode ec = 0; bool indexOk; unsigned index = args[0]->toInt32(exec, indexOk); if (!indexOk) { setDOMException(exec, DOMException::TYPE_MISMATCH_ERR); return jsUndefined(); } SVGTransformList* imp = static_cast<SVGTransformList*>(impl()); SVGList<RefPtr<SVGPODListItem<SVGTransform> > >* listImp = imp; RefPtr<SVGPODListItem<SVGTransform> > listItem(listImp->removeItem(index, ec)); JSSVGPODTypeWrapper<SVGTransform>* obj = new JSSVGPODTypeWrapperCreatorReadOnly<SVGTransform>(*listItem.get()); KJS::JSValue* result = toJS(exec, obj, m_context.get()); setDOMException(exec, ec); m_context->svgAttributeChanged(imp->associatedAttributeName()); return result; }