#ifndef TypedArrayType_h
#define TypedArrayType_h
#include "JSType.h"
#include <wtf/PrintStream.h>
namespace JSC {
struct ClassInfo;
enum TypedArrayType {
NotTypedArray,
TypeInt8,
TypeUint8,
TypeUint8Clamped,
TypeInt16,
TypeUint16,
TypeInt32,
TypeUint32,
TypeFloat32,
TypeFloat64,
TypeDataView
};
#define NUMBER_OF_TYPED_ARRAY_TYPES TypeDataView
inline unsigned toIndex(TypedArrayType type)
{
return static_cast<unsigned>(type) - 1;
}
inline TypedArrayType indexToTypedArrayType(unsigned index)
{
TypedArrayType result = static_cast<TypedArrayType>(index + 1);
ASSERT(result >= TypeInt8 && result <= TypeDataView);
return result;
}
inline bool isTypedView(TypedArrayType type)
{
switch (type) {
case NotTypedArray:
case TypeDataView:
return false;
default:
return true;
}
}
inline unsigned logElementSize(TypedArrayType type)
{
switch (type) {
case NotTypedArray:
break;
case TypeInt8:
case TypeUint8:
case TypeUint8Clamped:
case TypeDataView:
return 0;
case TypeInt16:
case TypeUint16:
return 1;
case TypeInt32:
case TypeUint32:
case TypeFloat32:
return 2;
case TypeFloat64:
return 3;
}
RELEASE_ASSERT_NOT_REACHED();
return 0;
}
inline size_t elementSize(TypedArrayType type)
{
return static_cast<size_t>(1) << logElementSize(type);
}
const ClassInfo* constructorClassInfoForType(TypedArrayType);
JSType typeForTypedArrayType(TypedArrayType);
inline bool isInt(TypedArrayType type)
{
switch (type) {
case TypeInt8:
case TypeUint8:
case TypeUint8Clamped:
case TypeInt16:
case TypeUint16:
case TypeInt32:
case TypeUint32:
return true;
default:
return false;
}
}
inline bool isFloat(TypedArrayType type)
{
switch (type) {
case TypeFloat32:
case TypeFloat64:
return true;
default:
return false;
}
}
inline bool isSigned(TypedArrayType type)
{
switch (type) {
case TypeInt8:
case TypeInt16:
case TypeInt32:
case TypeFloat32:
case TypeFloat64:
return true;
default:
return false;
}
}
inline bool isClamped(TypedArrayType type)
{
return type == TypeUint8Clamped;
}
}
namespace WTF {
void printInternal(PrintStream&, JSC::TypedArrayType);
}
#endif // TypedArrayType_h