JavascriptConversion.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. typedef int BOOL;
  7. namespace Js {
  8. class JavascriptConversion /* All static */
  9. {
  10. public:
  11. static Var OrdinaryToPrimitive(Var aValue, JavascriptHint hint, ScriptContext * scriptContext);
  12. static Var MethodCallToPrimitive(Var aValue, JavascriptHint hint, ScriptContext * scriptContext);
  13. static Var ToPrimitive(Var aValue, JavascriptHint hint, ScriptContext * scriptContext);
  14. static BOOL CanonicalNumericIndexString(Var aValue, double *indexValue, ScriptContext * scriptContext);
  15. static void ToPropertyKey(Var argument, ScriptContext* scriptContext, const PropertyRecord** propertyRecord);
  16. static JavascriptString* ToString(Var aValue, ScriptContext* scriptContext);
  17. static JavascriptString* ToLocaleString(Var aValue, ScriptContext* scriptContext);
  18. static BOOL ToObject(Var aValue, ScriptContext* scriptContext, RecyclableObject** object);
  19. static BOOL ToBoolean(Var aValue, ScriptContext* scriptContext);
  20. static BOOL ToBoolean_Full(Var aValue, ScriptContext* scriptContext);
  21. static bool ToBool(Var aValue, ScriptContext* scriptContext);
  22. static double ToNumber(Var aValue, ScriptContext* scriptContext);
  23. static void ToFloat_Helper(Var aValue, float *pResult, ScriptContext* scriptContext);
  24. static void ToNumber_Helper(Var aValue, double *pResult, ScriptContext* scriptContext);
  25. static BOOL ToNumber_FromPrimitive(Var aValue, double *pResult, BOOL allowUndefined, ScriptContext* scriptContext);
  26. static double ToNumber_Full(Var aValue, ScriptContext* scriptContext);
  27. static double ToInteger(Var aValue, ScriptContext* scriptContext);
  28. static double ToInteger(double value);
  29. static double ToInteger_Full(Var aValue, ScriptContext* scriptContext);
  30. static int32 ToInt32(Var aValue, ScriptContext* scriptContext);
  31. static __int64 ToInt64(Var aValue, ScriptContext* scriptContext);
  32. static int32 ToInt32(double value);
  33. static int32 ToInt32_Full(Var aValue, ScriptContext* scriptContext);
  34. static int8 ToInt8(Var aValue, ScriptContext* scriptContext);
  35. static uint8 ToUInt8(Var aValue, ScriptContext* scriptContext);
  36. static uint8 ToUInt8Clamped(Var aValue, ScriptContext* scriptContext);
  37. static int16 ToInt16(Var aValue, ScriptContext* scriptContext);
  38. static float ToFloat(Var aValue, ScriptContext* scriptContext);
  39. static uint32 ToUInt32(Var aValue, ScriptContext* scriptContext);
  40. static unsigned __int64 ToUInt64(Var aValue, ScriptContext* scriptContext);
  41. static uint32 ToUInt32(double value);
  42. static uint32 ToUInt32_Full(Var aValue, ScriptContext* scriptContext);
  43. static uint16 ToUInt16(Var aValue, ScriptContext* scriptContext);
  44. static uint16 ToUInt16(double value);
  45. static uint16 ToUInt16_Full(Var aValue, ScriptContext* scriptContext);
  46. static JavascriptString *CoerseString(Var aValue, ScriptContext* scriptContext, const char16* apiNameForErrorMsg);
  47. static BOOL CheckObjectCoercible(Var aValue, ScriptContext* scriptContext);
  48. static bool SameValue(Var aValue, Var bValue);
  49. static bool SameValueZero(Var aValue, Var bValue);
  50. static bool IsCallable(Var aValue);
  51. static BOOL ToInt32Finite(Var aValue, ScriptContext* scriptContext, int32* result);
  52. // ToString(ToPrimitive(aValue), for convert to string on concat
  53. static JavascriptString * ToPrimitiveString(Var aValue, ScriptContext * scriptContext);
  54. static int64 ToLength(Var aValue, ScriptContext* scriptContext);
  55. static int64 F32TOI64(float src, ScriptContext * ctx);
  56. static uint64 F32TOU64(float src, ScriptContext * ctx);
  57. static int64 F64TOI64(double src, ScriptContext * ctx);
  58. static uint64 F64TOU64(double src, ScriptContext * ctx);
  59. static int32 F32TOI32(float src, ScriptContext * ctx);
  60. static uint32 F32TOU32(float src, ScriptContext * ctx);
  61. static int32 F64TOI32(double src, ScriptContext * ctx);
  62. static uint32 F64TOU32(double src, ScriptContext * ctx);
  63. static float LongToFloat(__int64 aValue);
  64. static float ULongToFloat(unsigned __int64 aValue);
  65. static double LongToDouble(__int64 aValue);
  66. static double ULongToDouble(unsigned __int64 aValue);
  67. private:
  68. static BOOL ToInt32Finite(double value, int32* result);
  69. template<bool zero>
  70. static bool SameValueCommon(Var aValue, Var bValue);
  71. };
  72. }