blob: 6adfd94de0746d7be205b07a86d4f9def3fc1c54 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#pragma once
namespace Js
{
class JavascriptSIMDObject : public DynamicObject
{
private:
Field(Var) value; //The SIMDType var contained by the wrapper object
Field(uint) numLanes; //Number of lanes
Field(TypeId) typeDescriptor; //The SIMDType contained by the wrapper object.
DEFINE_VTABLE_CTOR(JavascriptSIMDObject, DynamicObject);
DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(JavascriptSIMDObject);
void SetTypeDescriptor(TypeId tid);
protected:
JavascriptSIMDObject(DynamicType * type);
public:
JavascriptSIMDObject(Var value, DynamicType * type, TypeId typeDescriptor = TypeIds_SIMDObject);
static bool Is(Var aValue);
static JavascriptSIMDObject* FromVar(Var aValue);
Var ToString(ScriptContext* scriptContext) const;
template <typename T, size_t N>
Var ToLocaleString(const Var* args, uint numArgs, char16 const *typeString, const T (&laneValues)[N], CallInfo* callInfo, ScriptContext* scriptContext) const;
Var Unwrap() const;
Var GetValue() const;
TypeId GetTypeDescriptor() const { return typeDescriptor; }
uint GetLaneCount() const { Assert(typeDescriptor != TypeIds_SIMDObject); return numLanes; };
};
}