summaryrefslogtreecommitdiff
path: root/src/dotnet-library/scala/runtime/Comparator.cs
blob: 4a1322d49ced3af7db80200c9bee2d1961e2fe1f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2002-2007, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

// $Id$

namespace scala.runtime {

  using System;

  public class Comparator {
    public static bool equals(object a, object b) {
      if (a == null)
        return b == null;
      if (a.Equals(b))
        return true;
      if (a == b)
        return true;
      IConvertible aa = a as IConvertible;
      IConvertible bb = b as IConvertible;
      if (aa != null && bb != null) {
        if (a is Decimal || b is Decimal)
          return aa.ToDecimal(null) == bb.ToDecimal(null);
        if (a is Double || b is Double)
          return aa.ToDouble(null) == bb.ToDouble(null);
        if (a is Single || b is Single)
          return aa.ToSingle(null) == bb.ToSingle(null);
        if (a is Int64 || b is Int64)
          return aa.ToInt64(null) == bb.ToInt64(null);
        return aa.ToInt32(null) == bb.ToInt32(null);
      }
      return false;
    }
  }

}