Java.st
author cg
Tue, 25 Jun 1996 19:56:39 +0000
changeset 71 feb1b4907dd4
parent 65 cc8721023892
child 76 9ff95e14dbfb
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#Java
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     2
	instanceVariableNames:''
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
     3
	classVariableNames:'Classes UnresolvedClassRefs'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Support'
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     6
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     7
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
     8
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
     9
!Java  class methodsFor:'accessing'!
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    10
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    11
allClasses
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    12
    ^ Classes
32
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    13
!
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    14
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    15
classNamed:aString
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
    16
    ^ self at:aString
24
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    17
! !
4a9822b95fc0 checkin from browser
cg
parents: 21
diff changeset
    18
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    19
!Java  class methodsFor:'class initialization'!
47
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    20
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    21
initAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    22
     self allClassesDo:[:cls |
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    23
        cls isInitialized ifFalse:[
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    24
            cls classInit
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    25
        ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    26
     ]
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    27
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    28
!
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    29
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    30
reinitAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    31
     self markAllClassesUninitialized.
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    32
     self initAllClasses
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    33
! !
b5f63f59c2c1 some net primitives added
cg
parents: 43
diff changeset
    34
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    35
!Java  class methodsFor:'enumerating'!
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    36
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    37
allClassesDo:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    38
    Classes notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    39
        Classes do:aBlock
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    40
    ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    41
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    42
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    43
!Java  class methodsFor:'registering java classes'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    44
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    45
at:aJavaName
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    46
    "search & return for a class by name;
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    47
     if there is no such class, return nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    48
     The argument, aJavaName may be either an internal name
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    49
     (sep'd by slashes) or an external name (sep'd by periods).
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    50
     The 'java/lang' standard packages prefix may be ommitted."
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    51
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    52
    |sym nm cls|
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    53
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    54
    Classes isNil ifTrue:[^ nil].
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    55
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    56
    sym := aJavaName asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    57
    sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    58
        cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    59
        cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    60
    ].
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    61
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    62
    nm := aJavaName.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    63
    (nm includes:$.) ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    64
        nm := (nm copy replaceAll:$. by:$/).
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    65
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    66
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    67
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    68
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    69
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    70
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    71
        
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    72
    (nm includes:$/) ifFalse:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    73
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    74
        "/ try java.lang.Foo
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    75
        "/
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    76
        nm := 'java/lang/' , nm.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    77
        sym := nm asSymbolIfInterned.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    78
        sym notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    79
            cls := Classes at:sym ifAbsent:nil.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    80
            cls notNil ifTrue:[^ cls].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    81
        ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    82
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    83
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    84
    ^ nil
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    85
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    86
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    87
     Java at:'java/lang/String' 
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    88
     Java at:'java.lang.String'
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    89
     Java at:'String'          
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    90
     Java at:'System'            
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    91
     Java at:'Foo'               
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
    92
    "
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    93
!
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    94
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    95
at:aJavaName put:aJavaClass
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    96
    Classes isNil ifTrue:[
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    97
        Classes := IdentityDictionary new.
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
    98
    ].
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
    99
    (Classes includesKey:(aJavaName asSymbol)) ifTrue:[
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   100
        self halt:'class ' , aJavaName , ' is already loaded'.
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   101
    ].
54
f37bcefb7091 avoid loading classes twice
cg
parents: 47
diff changeset
   102
32
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
   103
    Classes at:(aJavaName asSymbol) put:aJavaClass.
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   104
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   105
"/    UnresolvedClassRefs notNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   106
"/        UnresolvedClassRefs do:[:toResolve |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   107
"/        ]
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   108
"/    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   109
27
4560bb77bb36 checkin from browser
cg
parents: 24
diff changeset
   110
    self changed:#classes
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   111
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   112
    "Created: 17.4.1996 / 23:29:31 / cg"
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   113
    "Modified: 18.4.1996 / 00:45:39 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   114
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   115
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   116
flushClasses
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   117
    Classes := UnresolvedClassRefs := nil.
71
feb1b4907dd4 *** empty log message ***
cg
parents: 65
diff changeset
   118
    JavaInterpreter terminateAllThreads.
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   119
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   120
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   121
     Java flushClasses
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   122
    "
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   123
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   124
    "Modified: 18.4.1996 / 00:20:23 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   125
!
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   126
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   127
markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   128
    self allClassesDo:[:aJavaClass |
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   129
        aJavaClass markUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   130
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   131
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   132
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   133
     Java markAllClassesUninitialized
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   134
    "
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   135
!
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   136
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   137
rememberUnresolved:anUnresolvedClassRef
43
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   138
"/    UnresolvedClassRefs isNil ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   139
"/        UnresolvedClassRefs := OrderedCollection new.
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   140
"/    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 32
diff changeset
   141
"/    UnresolvedClassRefs add:anUnresolvedClassRef
21
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   142
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   143
    "Created: 18.4.1996 / 00:05:31 / cg"
b9dd73f299dd checkin from browser
cg
parents: 17
diff changeset
   144
    "Modified: 18.4.1996 / 00:05:41 / cg"
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   145
! !
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   146
65
cc8721023892 *** empty log message ***
cg
parents: 54
diff changeset
   147
!Java  class methodsFor:'documentation'!
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   148
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   149
version
71
feb1b4907dd4 *** empty log message ***
cg
parents: 65
diff changeset
   150
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/Java.st,v 1.10 1996/06/25 19:56:39 cg Exp $'
17
ea80d8a83063 intitial checkin
cg
parents:
diff changeset
   151
! !