Advertisement
Guest User

Untitled

a guest
Dec 20th, 2009
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.77 KB | None | 0 0
  1. diff --git a/src/library/scala/reflect/ClassManifest.scala b/src/library/scala/reflect/ClassManifest.scala
  2. index 8adef64..8e5cb6b 100644
  3. --- a/src/library/scala/reflect/ClassManifest.scala
  4. +++ b/src/library/scala/reflect/ClassManifest.scala
  5. @@ -78,6 +78,15 @@ trait ClassManifest[T] extends OptManifest[T] {
  6. def arrayManifest: ClassManifest[Array[T]] =
  7. ClassManifest.classType[Array[T]](arrayClass[T](erasure))
  8.  
  9. + def arrayApply(array: Array[T], index: Int): T =
  10. + array.asInstanceOf[Array[AnyRef]](index).asInstanceOf[T]
  11. +
  12. + def arrayUpdate(array: Array[T], index: Int, value: T): Unit =
  13. + array.asInstanceOf[Array[AnyRef]](index) = value.asInstanceOf[AnyRef]
  14. +
  15. + def arrayLength(array: Array[T]): Int =
  16. + array.asInstanceOf[Array[AnyRef]].length
  17. +
  18. def newArray(len: Int): Array[T] =
  19. java.lang.reflect.Array.newInstance(erasure, len).asInstanceOf[Array[T]]
  20.  
  21. diff --git a/src/library/scala/reflect/Manifest.scala b/src/library/scala/reflect/Manifest.scala
  22. index 4ea6f73..657f636 100644
  23. --- a/src/library/scala/reflect/Manifest.scala
  24. +++ b/src/library/scala/reflect/Manifest.scala
  25. @@ -52,6 +52,9 @@ object Manifest {
  26. override def newArray(len: Int): Array[Byte] = new Array[Byte](len)
  27. override def newWrappedArray(len: Int): WrappedArray[Byte] = new WrappedArray.ofByte(new Array[Byte](len))
  28. override def newArrayBuilder(): ArrayBuilder[Byte] = new ArrayBuilder.ofByte()
  29. + override def arrayApply(array: Array[Byte], index: Int): Byte = array(index)
  30. + override def arrayUpdate(array: Array[Byte], index: Int, value: Byte): Unit = array(index) = value
  31. + override def arrayLength(array: Array[Byte]): Int = array.length
  32. }
  33.  
  34. val Short = new (Manifest[Short] @serializable) {
  35. @@ -60,6 +63,9 @@ object Manifest {
  36. override def newArray(len: Int): Array[Short] = new Array[Short](len)
  37. override def newWrappedArray(len: Int): WrappedArray[Short] = new WrappedArray.ofShort(new Array[Short](len))
  38. override def newArrayBuilder(): ArrayBuilder[Short] = new ArrayBuilder.ofShort()
  39. + override def arrayApply(array: Array[Short], index: Int): Short = array(index)
  40. + override def arrayUpdate(array: Array[Short], index: Int, value: Short): Unit = array(index) = value
  41. + override def arrayLength(array: Array[Short]): Int = array.length
  42. }
  43.  
  44. val Char = new (Manifest[Char] @serializable) {
  45. @@ -68,6 +74,9 @@ object Manifest {
  46. override def newArray(len: Int): Array[Char] = new Array[Char](len)
  47. override def newWrappedArray(len: Int): WrappedArray[Char] = new WrappedArray.ofChar(new Array[Char](len))
  48. override def newArrayBuilder(): ArrayBuilder[Char] = new ArrayBuilder.ofChar()
  49. + override def arrayApply(array: Array[Char], index: Int): Char = array(index)
  50. + override def arrayUpdate(array: Array[Char], index: Int, value: Char): Unit = array(index) = value
  51. + override def arrayLength(array: Array[Char]): Int = array.length
  52. }
  53.  
  54. val Int = new (Manifest[Int] @serializable) {
  55. @@ -76,6 +85,9 @@ object Manifest {
  56. override def newArray(len: Int): Array[Int] = new Array[Int](len)
  57. override def newWrappedArray(len: Int): WrappedArray[Int] = new WrappedArray.ofInt(new Array[Int](len))
  58. override def newArrayBuilder(): ArrayBuilder[Int] = new ArrayBuilder.ofInt()
  59. + override def arrayApply(array: Array[Int], index: Int): Int = array(index)
  60. + override def arrayUpdate(array: Array[Int], index: Int, value: Int): Unit = array(index) = value
  61. + override def arrayLength(array: Array[Int]): Int = array.length
  62. }
  63.  
  64. val Long = new (Manifest[Long] @serializable) {
  65. @@ -84,6 +96,9 @@ object Manifest {
  66. override def newArray(len: Int): Array[Long] = new Array[Long](len)
  67. override def newWrappedArray(len: Int): WrappedArray[Long] = new WrappedArray.ofLong(new Array[Long](len))
  68. override def newArrayBuilder(): ArrayBuilder[Long] = new ArrayBuilder.ofLong()
  69. + override def arrayApply(array: Array[Long], index: Int): Long = array(index)
  70. + override def arrayUpdate(array: Array[Long], index: Int, value: Long): Unit = array(index) = value
  71. + override def arrayLength(array: Array[Long]): Int = array.length
  72. }
  73.  
  74. val Float = new (Manifest[Float] @serializable) {
  75. @@ -92,6 +107,9 @@ object Manifest {
  76. override def newArray(len: Int): Array[Float] = new Array[Float](len)
  77. override def newWrappedArray(len: Int): WrappedArray[Float] = new WrappedArray.ofFloat(new Array[Float](len))
  78. override def newArrayBuilder(): ArrayBuilder[Float] = new ArrayBuilder.ofFloat()
  79. + override def arrayApply(array: Array[Float], index: Int): Float = array(index)
  80. + override def arrayUpdate(array: Array[Float], index: Int, value: Float): Unit = array(index) = value
  81. + override def arrayLength(array: Array[Float]): Int = array.length
  82. }
  83.  
  84. val Double = new (Manifest[Double] @serializable) {
  85. @@ -100,6 +118,9 @@ object Manifest {
  86. override def newArray(len: Int): Array[Double] = new Array[Double](len)
  87. override def newWrappedArray(len: Int): WrappedArray[Double] = new WrappedArray.ofDouble(new Array[Double](len))
  88. override def newArrayBuilder(): ArrayBuilder[Double] = new ArrayBuilder.ofDouble()
  89. + override def arrayApply(array: Array[Double], index: Int): Double = array(index)
  90. + override def arrayUpdate(array: Array[Double], index: Int, value: Double): Unit = array(index) = value
  91. + override def arrayLength(array: Array[Double]): Int = array.length
  92. }
  93.  
  94. val Boolean = new (Manifest[Boolean] @serializable) {
  95. @@ -108,6 +129,9 @@ object Manifest {
  96. override def newArray(len: Int): Array[Boolean] = new Array[Boolean](len)
  97. override def newWrappedArray(len: Int): WrappedArray[Boolean] = new WrappedArray.ofBoolean(new Array[Boolean](len))
  98. override def newArrayBuilder(): ArrayBuilder[Boolean] = new ArrayBuilder.ofBoolean()
  99. + override def arrayApply(array: Array[Boolean], index: Int): Boolean = array(index)
  100. + override def arrayUpdate(array: Array[Boolean], index: Int, value: Boolean): Unit = array(index) = value
  101. + override def arrayLength(array: Array[Boolean]): Int = array.length
  102. }
  103.  
  104. val Unit = new (Manifest[Unit] @serializable) {
  105. @@ -116,6 +140,9 @@ object Manifest {
  106. override def newArray(len: Int): Array[Unit] = new Array[Unit](len)
  107. override def newWrappedArray(len: Int): WrappedArray[Unit] = new WrappedArray.ofUnit(new Array[Unit](len))
  108. override def newArrayBuilder(): ArrayBuilder[Unit] = new ArrayBuilder.ofUnit()
  109. + override def arrayApply(array: Array[Unit], index: Int): Unit = array(index)
  110. + override def arrayUpdate(array: Array[Unit], index: Int, value: Unit): Unit = array(index) = value
  111. + override def arrayLength(array: Array[Unit]): Int = array.length
  112. }
  113.  
  114. val Any: Manifest[Any] = new ClassTypeManifest[Any](None, classOf[java.lang.Object], List()) {
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement