src/Pure/General/untyped.scala
changeset 59080 611914621edb
parent 59079 12a689755c3d
child 63419 f473b6b16c63
equal deleted inserted replaced
59079:12a689755c3d 59080:611914621edb
     6 */
     6 */
     7 
     7 
     8 package isabelle
     8 package isabelle
     9 
     9 
    10 
    10 
       
    11 import java.lang.reflect.Method
       
    12 
       
    13 
    11 object Untyped
    14 object Untyped
    12 {
    15 {
       
    16   def method(c: Class[_], name: String, arg_types: Class[_]*): Method =
       
    17   {
       
    18     val m = c.getDeclaredMethod(name, arg_types: _*)
       
    19     m.setAccessible(true)
       
    20     m
       
    21   }
       
    22 
    13   def classes(obj: AnyRef): Iterator[Class[_ <: AnyRef]] = new Iterator[Class[_ <: AnyRef]] {
    23   def classes(obj: AnyRef): Iterator[Class[_ <: AnyRef]] = new Iterator[Class[_ <: AnyRef]] {
    14     private var next_elem: Class[_ <: AnyRef] = obj.getClass
    24     private var next_elem: Class[_ <: AnyRef] = obj.getClass
    15     def hasNext(): Boolean = next_elem != null
    25     def hasNext(): Boolean = next_elem != null
    16     def next(): Class[_ <: AnyRef] = {
    26     def next(): Class[_ <: AnyRef] = {
    17       val c = next_elem
    27       val c = next_elem