//------------------------------------------------------------------------------------------------------- // 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 JavascriptNumberObject : public DynamicObject { private: Field(Var) value; DEFINE_VTABLE_CTOR(JavascriptNumberObject, DynamicObject); DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(JavascriptNumberObject); protected: JavascriptNumberObject(DynamicType * type); public: JavascriptNumberObject(Var value, DynamicType * type); double GetValue() const; void SetValue(Var value); Var Unwrap() const; virtual BOOL GetDiagValueString(StringBuilder* stringBuilder, ScriptContext* requestContext) override; virtual BOOL GetDiagTypeString(StringBuilder* stringBuilder, ScriptContext* requestContext) override; #if ENABLE_TTD public: void SetValue_TTD(Js::Var val); virtual void MarkVisitKindSpecificPtrs(TTD::SnapshotExtractor* extractor) override; virtual TTD::NSSnapObjects::SnapObjectType GetSnapTag_TTD() const override; virtual void ExtractSnapObjectDataInto(TTD::NSSnapObjects::SnapObject* objData, TTD::SlabAllocator& alloc) override; #endif }; template <> inline bool VarIsImpl(RecyclableObject* obj) { return JavascriptOperators::GetTypeId(obj) == TypeIds_NumberObject; } }