JSUint16ArrayCustom.cpp revision ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddb
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "config.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(3D_CANVAS) || ENABLE(BLOB)
296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "JSUint16Array.h"
316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "JSArrayBufferViewHelper.h"
336c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "Uint16Array.h"
346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenusing namespace JSC;
36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocknamespace WebCore {
38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid JSUint16Array::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValue value)
406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    impl()->set(index, static_cast<unsigned short>(value.toInt32(exec)));
426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenJSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Uint16Array* object)
456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
46ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    return toJSArrayBufferView<JSUint16Array>(exec, globalObject, object);
476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
495af96e2c7b73ebc627c6894727826a7576d31758Leon ClarkeJSC::JSValue JSUint16Array::set(JSC::ExecState* exec)
506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    return setWebGLArrayHelper(exec, impl(), toUint16Array);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
53231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenEncodedJSValue JSC_HOST_CALL JSUint16ArrayConstructor::constructJSUint16Array(ExecState* exec)
5506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
5606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSUint16ArrayConstructor* jsConstructor = static_cast<JSUint16ArrayConstructor*>(exec->callee());
574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    RefPtr<Uint16Array> array = constructArrayBufferView<Uint16Array, unsigned short>(exec);
5806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    if (!array.get())
5906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        // Exception has already been thrown.
6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        return JSValue::encode(JSValue());
6106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return JSValue::encode(asObject(toJS(exec, jsConstructor->globalObject(), array.get())));
6206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
6306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} // namespace WebCore
656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif // ENABLE(3D_CANVAS) || ENABLE(BLOB)
67