The Labs \ Source Viewer \ SSCLI \ Microsoft.JScript \ DateObject

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. namespace Microsoft.JScript
  16. {
  17.    
  18.     using System;
  19.    
  20.     public class DateObject : JSObject
  21.     {
  22.         internal double value;
  23.        
  24.         internal DateObject(ScriptObject parent, double value) : base(parent)
  25.         {
  26.             this.value = value != value || value > Int64.MaxValue || value < Int64.MinValue ? Double.NaN : System.Math.Round(value);
  27.             this.noExpando = false;
  28.         }
  29.        
  30.         internal override string GetClassName()
  31.         {
  32.             return "Date";
  33.         }
  34.        
  35.         internal override object GetDefaultValue(PreferredType preferred_type)
  36.         {
  37.             if (this.GetParent() is LenientDatePrototype)
  38.                 return base.GetDefaultValue(preferred_type);
  39.             if (preferred_type == PreferredType.String || preferred_type == PreferredType.Either) {
  40.                 if (!this.noExpando) {
  41.                     object field = this.NameTable["toString"];
  42.                     if (field != null)
  43.                         return base.GetDefaultValue(preferred_type);
  44.                 }
  45.                 return DatePrototype.toString(this);
  46.             }
  47.             else if (preferred_type == PreferredType.LocaleString) {
  48.                 if (!this.noExpando) {
  49.                     object field = this.NameTable["toLocaleString"];
  50.                     if (field != null)
  51.                         return base.GetDefaultValue(preferred_type);
  52.                 }
  53.                 return DatePrototype.toLocaleString(this);
  54.             }
  55.             else {
  56.                 if (!this.noExpando) {
  57.                     object field = this.NameTable["valueOf"];
  58.                     if (field == null && preferred_type == PreferredType.Either)
  59.                         field = this.NameTable["toString"];
  60.                     if (field != null)
  61.                         return base.GetDefaultValue(preferred_type);
  62.                 }
  63.                 return this.value;
  64.             }
  65.         }
  66.        
  67.     }
  68. }

Developer Fusion