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"
276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "JSUint16Array.h"
286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "JSArrayBufferViewHelper.h"
306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "Uint16Array.h"
316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenusing namespace JSC;
33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocknamespace WebCore {
35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid JSUint16Array::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValue value)
376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    impl()->set(index, static_cast<unsigned short>(value.toInt32(exec)));
396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenJSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, Uint16Array* object)
426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
43ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    return toJSArrayBufferView<JSUint16Array>(exec, globalObject, object);
446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
465af96e2c7b73ebc627c6894727826a7576d31758Leon ClarkeJSC::JSValue JSUint16Array::set(JSC::ExecState* exec)
476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    return setWebGLArrayHelper(exec, impl(), toUint16Array);
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenEncodedJSValue JSC_HOST_CALL JSUint16ArrayConstructor::constructJSUint16Array(ExecState* exec)
5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSUint16ArrayConstructor* jsConstructor = static_cast<JSUint16ArrayConstructor*>(exec->callee());
544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    RefPtr<Uint16Array> array = constructArrayBufferView<Uint16Array, unsigned short>(exec);
5506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    if (!array.get())
5606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        // Exception has already been thrown.
5706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        return JSValue::encode(JSValue());
5806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return JSValue::encode(asObject(toJS(exec, jsConstructor->globalObject(), array.get())));
5906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} // namespace WebCore
62