src/Tools/jEdit/src/proofdocument/Token.scala
author immler@in.tum.de
Fri, 28 Nov 2008 15:00:07 +0100
changeset 34388 23b8351ecbbe
parent 34318 c13e168a8ae6
child 34389 e858aafb4809
permissions -rw-r--r--
arbitrary type for tokens

package isabelle.proofdocument

object Token {
  object Kind {
    val COMMAND_START = "COMMAND_START"
    val COMMENT = "COMMENT"
  }
}

class Token[C](var start : Int, var stop : Int, var kind : String) {
  var next : Token[C] = null
  var previous : Token[C] = null
  var command : C = null.asInstanceOf[C]
  
  def length = stop - start

  def shift(offset : Int, bottomClamp : Int) {
    start = bottomClamp max (start + offset)
    stop = bottomClamp max (stop + offset)
  }
  
  override def hashCode() : Int = (31 + start) * 31 + stop

  override def equals(obj : Any) : Boolean = {
    if (super.equals(obj))
      return true;
    
    if (null == obj)
      return false;
    
    obj match {
      case other: Token[_] => 
        (start == other.start) && (stop == other.stop)
      case other: Any => false  
    }
  }
}