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

  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 BooleanObject : JSObject
  21.     {
  22.         internal bool value;
  23.         private bool implicitWrapper;
  24.        
  25.         protected BooleanObject(ScriptObject prototype, Type subType) : base(prototype, subType)
  26.         {
  27.             this.value = value;
  28.             this.noExpando = false;
  29.             this.implicitWrapper = false;
  30.         }
  31.        
  32.         internal BooleanObject(ScriptObject prototype, bool value, bool implicitWrapper) : base(prototype, typeof(BooleanObject))
  33.         {
  34.             this.value = value;
  35.             this.noExpando = implicitWrapper;
  36.             this.implicitWrapper = implicitWrapper;
  37.         }
  38.        
  39.         internal override string GetClassName()
  40.         {
  41.             return "Boolean";
  42.         }
  43.        
  44.         internal override object GetDefaultValue(PreferredType preferred_type)
  45.         {
  46.             if (this.GetParent() is LenientBooleanPrototype)
  47.                 return base.GetDefaultValue(preferred_type);
  48.             if (preferred_type == PreferredType.String) {
  49.                 if (!this.noExpando) {
  50.                     object field = this.NameTable["toString"];
  51.                     if (field != null)
  52.                         return base.GetDefaultValue(preferred_type);
  53.                 }
  54.                 return Convert.ToString(this.value);
  55.             }
  56.             else if (preferred_type == PreferredType.LocaleString) {
  57.                 return base.GetDefaultValue(preferred_type);
  58.             }
  59.             else {
  60.                 if (!this.noExpando) {
  61.                     object field = this.NameTable["valueOf"];
  62.                     if (field == null && preferred_type == PreferredType.Either)
  63.                         field = this.NameTable["toString"];
  64.                     if (field != null)
  65.                         return base.GetDefaultValue(preferred_type);
  66.                 }
  67.                 return this.value;
  68.             }
  69.         }
  70.        
  71.         public new Type GetType()
  72.         {
  73.             return this.implicitWrapper ? Typeob.Boolean : Typeob.BooleanObject;
  74.         }
  75.     }
  76. }

Developer Fusion