JsBoolean.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using Jint.Runtime;
  3. namespace Jint.Native
  4. {
  5. public sealed class JsBoolean : JsValue, IEquatable<JsBoolean>
  6. {
  7. public static readonly JsBoolean False = new JsBoolean(false);
  8. public static readonly JsBoolean True = new JsBoolean(true);
  9. internal static readonly object BoxedTrue = true;
  10. internal static readonly object BoxedFalse = false;
  11. internal readonly bool _value;
  12. public JsBoolean(bool value) : base(Types.Boolean)
  13. {
  14. _value = value;
  15. }
  16. public override object ToObject()
  17. {
  18. return _value ? BoxedTrue : BoxedFalse;
  19. }
  20. public override string ToString()
  21. {
  22. return _value ? bool.TrueString : bool.FalseString;
  23. }
  24. public override bool Equals(JsValue obj)
  25. {
  26. if (ReferenceEquals(null, obj))
  27. {
  28. return false;
  29. }
  30. if (!(obj is JsBoolean number))
  31. {
  32. return false;
  33. }
  34. return Equals(number);
  35. }
  36. public bool Equals(JsBoolean other)
  37. {
  38. if (ReferenceEquals(null, other))
  39. {
  40. return false;
  41. }
  42. if (ReferenceEquals(this, other))
  43. {
  44. return true;
  45. }
  46. return _value == other._value;
  47. }
  48. public override int GetHashCode()
  49. {
  50. return _value.GetHashCode();
  51. }
  52. }
  53. }