--- a/JavaArray.st Sat Feb 02 01:23:18 2013 +0100
+++ b/JavaArray.st Sat Feb 16 19:08:45 2013 +0100
@@ -1,7 +1,10 @@
"
COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
- SWING Research Group, Czech Technical University in Prague (*)
+ SWING Research Group, Czech Technical University in Prague
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -10,8 +13,10 @@
other person. No title to or ownership of the software is
hereby transferred.
- (*) extensions, changes and fixes for java1.1 compatibility.
- For a list of changes, see a list of diffs against the last stable version before 2011-08.
+ [1] Code written at SWING Research Group contains a signature
+ of one of the above copright owners. For exact set of such code,
+ see the differences between this version and version stx:libjava
+ as of 1.9.2010
"
"{ Package: 'stx:libjava' }"
@@ -34,8 +39,11 @@
copyright
"
COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
- SWING Research Group, Czech Technical University in Prague (*)
+ SWING Research Group, Czech Technical University in Prague
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -44,14 +52,30 @@
other person. No title to or ownership of the software is
hereby transferred.
- (*) extensions, changes and fixes for java1.1 compatibility.
- For a list of changes, see a list of diffs against the last stable version before 2011-08.
+ [1] Code written at SWING Research Group contains a signature
+ of one of the above copright owners. For exact set of such code,
+ see the differences between this version and version stx:libjava
+ as of 1.9.2010
"
! !
!JavaArray class methodsFor:'initialization'!
+classInit
+
+ componentClass isJavaClass ifTrue:[
+ ^componentClass classInit
+ ].
+ componentClass isJavaArrayClass ifTrue:[
+ componentClass javaComponentClass isJavaPrimitiveType ifFalse:[
+ ^componentClass classInit
+ ]
+ ]
+
+ "Created: / 21-10-2011 / 11:03:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
setComponentClass:aClass
componentClass := aClass.
@@ -60,6 +84,13 @@
!JavaArray class methodsFor:'accessing'!
+classLoader
+
+ ^self javaComponentClass classLoader
+
+ "Created: / 31-08-2011 / 22:22:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
javaClass
^ self
@@ -73,6 +104,11 @@
!
javaName
+
+ componentClass isJavaArrayClass ifTrue:[
+ ^'[' , componentClass javaName.
+ ].
+
^'[L' , componentClass javaName, ';'
"Created: / 25-02-2011 / 19:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -94,6 +130,62 @@
"Created: / 22-05-2011 / 18:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!JavaArray class methodsFor:'accessing - java'!
+
+javaMirrorClass
+ ^self == JavaArray ifTrue:[
+ super javaMirrorClass
+ ] ifFalse:[
+ JavaMirror mirrorClassForJavaArray
+ ]
+
+ "Created: / 31-07-2012 / 18:28:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaArray class methodsFor:'autoboxing support'!
+
+javaUnwrap: anObject
+ "Given a Java array, create a corresponding Smalltalk array.
+ Called by interop proxies"
+
+ | sarray |
+
+ sarray := Array new: anObject size.
+ 1 to: sarray size do:[:i|
+ sarray at: i put: (componentClass javaUnwrap: (anObject at: i)).
+ ].
+ ^sarray.
+
+ "Created: / 18-04-2012 / 08:23:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaWrap: anObject
+ "Given a Smalltalk array, create a corresponding Java array.
+ Called by interop proxies"
+
+ | jarray |
+
+ self assert: anObject isSequenceable.
+ jarray := self new: anObject size.
+ 1 to: jarray size do:[:i|
+ jarray at: i put: (componentClass javaWrap: (anObject at: i)).
+ ].
+ ^jarray.
+
+ "Created: / 18-04-2012 / 08:21:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaWrapRequired
+ "Returns true, if a #javaWrap: has to be called
+ prior an instance of Smalltalk object is passed
+ as an argument to Java method, whoose formal tyoe
+ is the receiver. "
+
+ ^ true
+
+ "Created: / 04-11-2012 / 23:33:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!JavaArray class methodsFor:'class creation'!
javaArrayClass
@@ -103,31 +195,30 @@
"Created: / 11-06-2011 / 23:35:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-javaArrayClassFor: aJavaClass
-
- | meta cls |
+javaArrayClassFor: aJavaClass
+ | meta cls |
- meta := Metaclass new.
- meta setSuperclass: JavaArray class.
- meta instSize: JavaArray class instSize.
- cls := meta new.
- cls setSuperclass: JavaArray.
- cls flags: JavaArray flags.
- cls instSize: JavaArray instSize.
- cls setComponentClass: aJavaClass.
- cls setName: (aJavaClass name , '[]') asSymbol.
- "Kludge, spec says"
- "All methods of class Object may be invoked on an array."
- cls setMethodDictionary: (Java classForName: 'java.lang.Object') methodDictionary.
-
- ^cls
-
+ ^JavaVM arrayClassFor: aJavaClass ifAbsentPut:[
+ meta := Metaclass new.
+ meta setSuperclass: JavaArray class.
+ meta instSize: JavaArray class instSize.
+ cls := meta new.
+ cls setSuperclass: JavaArray.
+ cls flags: JavaArray flags.
+ cls instSize: JavaArray instSize.
+ cls setComponentClass: aJavaClass.
+ cls setName: (aJavaClass name , '[]') asSymbol.
+ "Kludge, spec says" "All methods of class Object may be invoked on an array."
+ cls setMethodDictionary: (JavaVM classForName: 'java.lang.Object')
+ methodDictionary.
+ cls
+ ]
"
JavaArray javaArrayClassFor: Object
"
"Created: / 17-12-2010 / 13:45:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 01-03-2011 / 14:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 05-07-2012 / 23:23:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaArray class methodsFor:'queries'!
@@ -225,14 +316,16 @@
!JavaArray class methodsFor:'documentation'!
-version
- ^ '$Header: /cvs/stx/stx/libjava/JavaArray.st,v 1.3 2011-11-24 11:54:36 cg Exp $'
+version_CVS
+ ^ '$Header: /cvs/stx/stx/libjava/JavaArray.st,v 1.4 2013-02-16 18:08:32 vrany Exp $'
!
-version_CVS
- ^ '$Header: /cvs/stx/stx/libjava/JavaArray.st,v 1.3 2011-11-24 11:54:36 cg Exp $'
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
!
version_SVN
- ^ '§Id: JavaArray.st,v 1.1 2011/08/18 19:06:53 vrany Exp §'
+ ^ '§Id§'
! !
+