JavaClass.st
author cg
Wed, 17 Apr 1996 22:51:08 +0000
changeset 21 b9dd73f299dd
parent 18 6c07dc4b1118
child 22 d22e13bdf100
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     1
ClassDescription subclass:#JavaClass
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
     2
	instanceVariableNames:'fullName accessFlags constantPool sourceFile'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     3
	classVariableNames:''
083530508d9c intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
083530508d9c intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Classes'
083530508d9c intitial checkin
cg
parents:
diff changeset
     6
!
083530508d9c intitial checkin
cg
parents:
diff changeset
     7
083530508d9c intitial checkin
cg
parents:
diff changeset
     8
083530508d9c intitial checkin
cg
parents:
diff changeset
     9
!JavaClass class methodsFor:'instance creation'!
083530508d9c intitial checkin
cg
parents:
diff changeset
    10
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    11
fullName:aString
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    12
    ^ self new setFullName:aString
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    13
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    14
    "Created: 15.4.1996 / 15:52:55 / cg"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    15
!
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    16
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    17
name:aString
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    18
    self shouldNotImplement
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    19
083530508d9c intitial checkin
cg
parents:
diff changeset
    20
    "Created: 15.4.1996 / 15:52:55 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
    21
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    22
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    23
!JavaClass methodsFor:'accessing'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    24
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    25
category
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    26
    "java classes do not really hav a category;
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    27
     simulate one by separating its name into individual components,
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    28
     prepending 'java'"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    29
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    30
    |nameComponents|
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    31
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    32
    nameComponents := fullName asCollectionOfSubstringsSeparatedBy:$/.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    33
    ^ 'java-' , (nameComponents asStringWith:$/ from:1 to:(nameComponents size - 1))
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    34
!
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    35
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    36
constantPool
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    37
    ^ constantPool
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    38
!
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    39
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    40
fullName
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    41
    ^ fullName
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 7
diff changeset
    42
!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 7
diff changeset
    43
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 7
diff changeset
    44
name
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 7
diff changeset
    45
    ^ fullName
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    46
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    47
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    48
!JavaClass methodsFor:'printing & storing'!
083530508d9c intitial checkin
cg
parents:
diff changeset
    49
083530508d9c intitial checkin
cg
parents:
diff changeset
    50
displayString
083530508d9c intitial checkin
cg
parents:
diff changeset
    51
    ^ self class name , '(' , name , ')'
083530508d9c intitial checkin
cg
parents:
diff changeset
    52
083530508d9c intitial checkin
cg
parents:
diff changeset
    53
    "Created: 15.4.1996 / 16:02:48 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
    54
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    55
083530508d9c intitial checkin
cg
parents:
diff changeset
    56
!JavaClass methodsFor:'private accessing'!
083530508d9c intitial checkin
cg
parents:
diff changeset
    57
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    58
addMethod:m name:name signature:signature
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    59
    selectorArray isNil ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    60
        selectorArray := #().
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    61
        methodArray := #()
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    62
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    63
    selectorArray := selectorArray copyWith:name.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    64
    methodArray := methodArray copyWith:m
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    65
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    66
    "Created: 15.4.1996 / 16:42:52 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    67
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    68
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    69
setAccessFlags:flags
3
e3c2a84b2a72 checkin from browser
cg
parents: 1
diff changeset
    70
    accessFlags := flags.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    71
083530508d9c intitial checkin
cg
parents:
diff changeset
    72
    "Created: 15.4.1996 / 16:42:52 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    73
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    74
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    75
setConstantPool:anArray
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    76
    constantPool := anArray.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    77
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    78
    "Created: 15.4.1996 / 16:42:52 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    79
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    80
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    81
setFullName:aString
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    82
    |nameComponents|
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    83
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    84
    fullName := aString.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    85
    nameComponents := aString asCollectionOfSubstringsSeparatedBy:$/.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    86
    name := nameComponents last
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    87
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    88
    "Created: 15.4.1996 / 16:42:52 / cg"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    89
!
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
    90
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    91
setSourceFile:aFilename
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    92
    sourceFile := aFilename.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    93
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
    94
    "Created: 15.4.1996 / 16:42:52 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    95
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    96
18
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
    97
!JavaClass methodsFor:'queries'!
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
    98
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
    99
isFinal
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   100
    ^ (accessFlags bitAnd:16r0010) ~~ 0
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   101
!
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   102
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   103
isInterface
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   104
    ^ (accessFlags bitAnd:16r0200) ~~ 0
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   105
!
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   106
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   107
isPublic
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   108
    ^ (accessFlags bitAnd:16r0001) ~~ 0
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   109
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   110
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   111
! !
6c07dc4b1118 checkin from browser
cg
parents: 8
diff changeset
   112
21
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   113
!JavaClass methodsFor:'resolving class refs'!
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   114
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   115
resolveClassRefs
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   116
    |newClass const newConst|
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   117
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   118
    (superclass isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   119
        newClass := superclass resolve.
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   120
        newClass isNil ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   121
            newClass := JavaClassReader loadClass:(superclass fullName).
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   122
        ].
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   123
        newClass notNil ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   124
            superclass := newClass
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   125
        ]
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   126
    ].
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   127
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   128
    1 to:constantPool size do:[:index |
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   129
        const := constantPool at:index.
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   130
        (const isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   131
            "/ try to resolve
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   132
            newConst := const resolve.
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   133
            newConst isNil ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   134
                newConst := JavaClassReader loadClass:(const fullName).
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   135
            ].
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   136
            newConst notNil ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   137
                constantPool at:index put:newConst
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   138
            ]
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   139
        ]
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   140
    ].
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   141
! !
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   142
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   143
!JavaClass class methodsFor:'documentation'!
083530508d9c intitial checkin
cg
parents:
diff changeset
   144
083530508d9c intitial checkin
cg
parents:
diff changeset
   145
version
21
b9dd73f299dd checkin from browser
cg
parents: 18
diff changeset
   146
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClass.st,v 1.7 1996/04/17 22:50:15 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   147
! !