JavascriptDate.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. namespace Js
  7. {
  8. class JavascriptDate : public DynamicObject
  9. {
  10. protected:
  11. Field(DateImplementation) m_date;
  12. DEFINE_VTABLE_CTOR_MEMBER_INIT(JavascriptDate, DynamicObject, m_date);
  13. DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(JavascriptDate);
  14. public:
  15. JavascriptDate(double value, DynamicType * type);
  16. JavascriptDate(DynamicType * type);
  17. static bool Is(Var aValue);
  18. double GetTime() { return m_date.GetMilliSeconds(); }
  19. static JavascriptDate* FromVar(Var aValue);
  20. class EntryInfo
  21. {
  22. public:
  23. static FunctionInfo NewInstance;
  24. static FunctionInfo GetDate;
  25. static FunctionInfo GetDay;
  26. static FunctionInfo GetFullYear;
  27. static FunctionInfo GetYear;
  28. static FunctionInfo GetHours;
  29. static FunctionInfo GetMilliseconds;
  30. static FunctionInfo GetMinutes;
  31. static FunctionInfo GetMonth;
  32. static FunctionInfo GetSeconds;
  33. static FunctionInfo GetTime;
  34. static FunctionInfo GetTimezoneOffset;
  35. static FunctionInfo GetUTCDate;
  36. static FunctionInfo GetUTCDay;
  37. static FunctionInfo GetUTCFullYear;
  38. static FunctionInfo GetUTCHours;
  39. static FunctionInfo GetUTCMilliseconds;
  40. static FunctionInfo GetUTCMinutes;
  41. static FunctionInfo GetUTCMonth;
  42. static FunctionInfo GetUTCSeconds;
  43. static FunctionInfo GetVarDate;
  44. static FunctionInfo Now;
  45. static FunctionInfo Parse;
  46. static FunctionInfo SetDate;
  47. static FunctionInfo SetFullYear;
  48. static FunctionInfo SetYear;
  49. static FunctionInfo SetHours;
  50. static FunctionInfo SetMilliseconds;
  51. static FunctionInfo SetMinutes;
  52. static FunctionInfo SetMonth;
  53. static FunctionInfo SetSeconds;
  54. static FunctionInfo SetTime;
  55. static FunctionInfo SetUTCDate;
  56. static FunctionInfo SetUTCFullYear;
  57. static FunctionInfo SetUTCHours;
  58. static FunctionInfo SetUTCMilliseconds;
  59. static FunctionInfo SetUTCMinutes;
  60. static FunctionInfo SetUTCMonth;
  61. static FunctionInfo SetUTCSeconds;
  62. static FunctionInfo ToDateString;
  63. static FunctionInfo ToISOString;
  64. static FunctionInfo ToJSON;
  65. static FunctionInfo ToLocaleDateString;
  66. static FunctionInfo ToLocaleString;
  67. static FunctionInfo ToLocaleTimeString;
  68. static FunctionInfo ToString;
  69. static FunctionInfo ToTimeString;
  70. static FunctionInfo ToUTCString;
  71. static FunctionInfo ToGMTString;
  72. static FunctionInfo UTC;
  73. static FunctionInfo ValueOf;
  74. static FunctionInfo SymbolToPrimitive;
  75. };
  76. static Var NewInstance(RecyclableObject* function, CallInfo callInfo, ...);
  77. static Var EntryGetDate(RecyclableObject* function, CallInfo callInfo, ...);
  78. static Var EntryGetDay(RecyclableObject* function, CallInfo callInfo, ...);
  79. static Var EntryGetFullYear(RecyclableObject* function, CallInfo callInfo, ...);
  80. static Var EntryGetYear(RecyclableObject* function, CallInfo callInfo, ...);
  81. static Var EntryGetHours(RecyclableObject* function, CallInfo callInfo, ...);
  82. static Var EntryGetMilliseconds(RecyclableObject* function, CallInfo callInfo, ...);
  83. static Var EntryGetMinutes(RecyclableObject* function, CallInfo callInfo, ...);
  84. static Var EntryGetMonth(RecyclableObject* function, CallInfo callInfo, ...);
  85. static Var EntryGetSeconds(RecyclableObject* function, CallInfo callInfo, ...);
  86. static Var EntryGetTime(RecyclableObject* function, CallInfo callInfo, ...);
  87. static Var EntryGetTimezoneOffset(RecyclableObject* function, CallInfo callInfo, ...);
  88. static Var EntryGetUTCDate(RecyclableObject* function, CallInfo callInfo, ...);
  89. static Var EntryGetUTCDay(RecyclableObject* function, CallInfo callInfo, ...);
  90. static Var EntryGetUTCFullYear(RecyclableObject* function, CallInfo callInfo, ...);
  91. static Var EntryGetUTCHours(RecyclableObject* function, CallInfo callInfo, ...);
  92. static Var EntryGetUTCMilliseconds(RecyclableObject* function, CallInfo callInfo, ...);
  93. static Var EntryGetUTCMinutes(RecyclableObject* function, CallInfo callInfo, ...);
  94. static Var EntryGetUTCMonth(RecyclableObject* function, CallInfo callInfo, ...);
  95. static Var EntryGetUTCSeconds(RecyclableObject* function, CallInfo callInfo, ...);
  96. static Var EntryGetVarDate(RecyclableObject* function, CallInfo callInfo, ...);
  97. static Var EntryNow(RecyclableObject* function, CallInfo callInfo, ...);
  98. static Var EntryParse(RecyclableObject* function, CallInfo callInfo, ...);
  99. static Var EntrySetDate(RecyclableObject* function, CallInfo callInfo, ...);
  100. static Var EntrySetFullYear(RecyclableObject* function, CallInfo callInfo, ...);
  101. static Var EntrySetYear(RecyclableObject* function, CallInfo callInfo, ...);
  102. static Var EntrySetHours(RecyclableObject* function, CallInfo callInfo, ...);
  103. static Var EntrySetMilliseconds(RecyclableObject* function, CallInfo callInfo, ...);
  104. static Var EntrySetMinutes(RecyclableObject* function, CallInfo callInfo, ...);
  105. static Var EntrySetMonth(RecyclableObject* function, CallInfo callInfo, ...);
  106. static Var EntrySetSeconds(RecyclableObject* function, CallInfo callInfo, ...);
  107. static Var EntrySetTime(RecyclableObject* function, CallInfo callInfo, ...);
  108. static Var EntrySetUTCDate(RecyclableObject* function, CallInfo callInfo, ...);
  109. static Var EntrySetUTCFullYear(RecyclableObject* function, CallInfo callInfo, ...);
  110. static Var EntrySetUTCHours(RecyclableObject* function, CallInfo callInfo, ...);
  111. static Var EntrySetUTCMilliseconds(RecyclableObject* function, CallInfo callInfo, ...);
  112. static Var EntrySetUTCMinutes(RecyclableObject* function, CallInfo callInfo, ...);
  113. static Var EntrySetUTCMonth(RecyclableObject* function, CallInfo callInfo, ...);
  114. static Var EntrySetUTCSeconds(RecyclableObject* function, CallInfo callInfo, ...);
  115. static Var EntryToDateString(RecyclableObject* function, CallInfo callInfo, ...);
  116. static Var EntryToISOString(RecyclableObject* function, CallInfo callInfo, ...);
  117. static Var EntryToJSON(RecyclableObject* function, CallInfo callInfo, ...);
  118. static Var EntryToLocaleDateString(RecyclableObject* function, CallInfo callInfo, ...);
  119. static Var EntryToLocaleString(RecyclableObject* function, CallInfo callInfo, ...);
  120. static Var EntryToLocaleTimeString(RecyclableObject* function, CallInfo callInfo, ...);
  121. static Var EntryToString(RecyclableObject* function, CallInfo callInfo, ...);
  122. static Var EntryToTimeString(RecyclableObject* function, CallInfo callInfo, ...);
  123. static Var EntryToUTCString(RecyclableObject* function, CallInfo callInfo, ...);
  124. static Var EntryToGMTString(RecyclableObject* function, CallInfo callInfo, ...);
  125. static Var EntryUTC(RecyclableObject* function, CallInfo callInfo, ...);
  126. static Var EntryValueOf(RecyclableObject* function, CallInfo callInfo, ...);
  127. static Var EntrySymbolToPrimitive(RecyclableObject* function, CallInfo callInfo, ...);
  128. static JavascriptString* ToLocaleString(JavascriptDate* date, ScriptContext* requestContext);
  129. static JavascriptString* ToString(JavascriptDate* date, ScriptContext* requestContext);
  130. virtual BOOL ToPrimitive(JavascriptHint hint, Var* result, ScriptContext * requestContext) override;
  131. virtual BOOL GetDiagValueString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext) override;
  132. virtual BOOL GetDiagTypeString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext) override;
  133. private:
  134. static Var GetDateData(JavascriptDate* date, DateImplementation::DateData dd, ScriptContext* scriptContext);
  135. static Var GetUTCDateData(JavascriptDate* date, DateImplementation::DateData dd, ScriptContext* scriptContext);
  136. static Var SetDateData(JavascriptDate* date, Arguments args, DateImplementation::DateData dd, ScriptContext* scriptContext);
  137. static Var SetUTCDateData(JavascriptDate* date, Arguments args, DateImplementation::DateData dd, ScriptContext* scriptContext);
  138. static double ParseHelper(ScriptContext *scriptContext, JavascriptString *str);
  139. static JavascriptDate* NewInstanceAsConstructor(Arguments args, ScriptContext* scriptContext, bool forceCurrentDate = false);
  140. static BOOL TryInvokeRemotely(JavascriptMethod entryPoint, ScriptContext * scriptContext, Arguments & args, Var * result);
  141. #if ENABLE_TTD
  142. public:
  143. virtual TTD::NSSnapObjects::SnapObjectType GetSnapTag_TTD() const override;
  144. virtual void ExtractSnapObjectDataInto(TTD::NSSnapObjects::SnapObject* objData, TTD::SlabAllocator& alloc) override;
  145. #endif
  146. };
  147. } // namespace Js