summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/matching/Npair.scala
blob: 8cb050de2e1ee81490456af52e6ae80c42c3d6b4 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* NSC -- new scala compiler
 * Copyright 2005 LAMP/EPFL
 * @author buraq
 */
// $Id$
package scala.tools.nsc.matching ;

import java.util.{ HashMap, TreeSet };
/** cartesian
 */

/** Int x TreeSet[ Int ]
 */
case class Npair(nstate: Integer, nset: TreeSet) {

  override def equals(that: Any): Boolean = {
    this match {
      case Npair(nstate, nset) =>
	that match {
	  case Npair(_nstate, _nset) =>
	    return ((nstate == _nstate)
		    && (nset == _nset));
          case _ => return false
	}
      case _ => return false
    }
  }

  override def toString(): String = this match {
    case Npair(nstate, nset) =>
      //Integer dstate = (Integer) indexMap.get(nset);
      "<n" + nstate.toString() + " in " + nset /*+" = d"+dstate*/ + ">";
    case _ => null
  }

 def toString(indexMap: HashMap):  String = {
    //assert indexMap != null;
    this match {
      case Npair(nstate, nset) =>
      //assert nstate != null;
      val dstate = indexMap.get( nset ).asInstanceOf[Integer];
      return "<n" + nstate.toString() + " in " + nset + " = d" + dstate + ">";
      case _ =>
        return null;
    }
  }


}

class NpairComparator extends StateSetComparator {
  override def compare(o1: Any, o2: Any): Int = {
    o1 match {
      case Npair(nstate, nset) => o2 match {
	case Npair(_nstate, _nset) =>
	  val res = nstate.compareTo(_nstate);
          if (res != 0)
	    return res;
	  else
	    return super.compare(nset, _nset);
      }
    }
  }
}