1/*
2 * Copyright (C) 2013 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
27#include "TypedArrayType.h"
28
29#include "JSDataView.h"
30#include "JSTypedArrayConstructors.h"
31#include "JSTypedArrays.h"
32
33namespace JSC {
34
35JSType typeForTypedArrayType(TypedArrayType type)
36{
37    switch (type) {
38    case NotTypedArray:
39        RELEASE_ASSERT_NOT_REACHED();
40        return UnspecifiedType;
41    case TypeInt8:
42        return Int8ArrayType;
43    case TypeUint8:
44        return Uint8ArrayType;
45    case TypeUint8Clamped:
46        return Uint8ClampedArrayType;
47    case TypeInt16:
48        return Int16ArrayType;
49    case TypeUint16:
50        return Uint16ArrayType;
51    case TypeInt32:
52        return Int32ArrayType;
53    case TypeUint32:
54        return Uint32ArrayType;
55    case TypeFloat32:
56        return Float32ArrayType;
57    case TypeFloat64:
58        return Float64ArrayType;
59    case TypeDataView:
60        return DataViewType;
61
62    default:
63        RELEASE_ASSERT_NOT_REACHED();
64        return UnspecifiedType;
65    }
66}
67
68const ClassInfo* constructorClassInfoForType(TypedArrayType type)
69{
70    switch (type) {
71    case NotTypedArray:
72        return 0;
73    case TypeInt8:
74        return JSInt8ArrayConstructor::info();
75    case TypeUint8:
76        return JSUint8ArrayConstructor::info();
77    case TypeUint8Clamped:
78        return JSUint8ClampedArrayConstructor::info();
79    case TypeInt16:
80        return JSInt16ArrayConstructor::info();
81    case TypeUint16:
82        return JSUint16ArrayConstructor::info();
83    case TypeInt32:
84        return JSInt32ArrayConstructor::info();
85    case TypeUint32:
86        return JSUint32ArrayConstructor::info();
87    case TypeFloat32:
88        return JSFloat32ArrayConstructor::info();
89    case TypeFloat64:
90        return JSFloat64ArrayConstructor::info();
91    case TypeDataView:
92        return JSDataViewConstructor::info();
93    }
94    RELEASE_ASSERT_NOT_REACHED();
95    return 0;
96}
97
98} // namespace JSC
99
100namespace WTF {
101
102using namespace JSC;
103
104void printInternal(PrintStream& out, TypedArrayType type)
105{
106    switch (type) {
107    case NotTypedArray:
108        out.print("NotTypedArray");
109        return;
110    case TypeInt8:
111        out.print("TypeInt8");
112        return;
113    case TypeInt16:
114        out.print("TypeInt16");
115        return;
116    case TypeInt32:
117        out.print("TypeInt32");
118        return;
119    case TypeUint8:
120        out.print("TypeUint8");
121        return;
122    case TypeUint8Clamped:
123        out.print("TypeUint8Clamped");
124        return;
125    case TypeUint16:
126        out.print("TypeUint16");
127        return;
128    case TypeUint32:
129        out.print("TypeUint32");
130        return;
131    case TypeFloat32:
132        out.print("TypeFloat32");
133        return;
134    case TypeFloat64:
135        out.print("TypeFloat64");
136        return;
137    case TypeDataView:
138        out.print("TypeDataView");
139        return;
140    }
141
142    RELEASE_ASSERT_NOT_REACHED();
143}
144
145} // namespace WTF
146
147