JavaUnresolvedConstant.st
author cg
Fri, 28 Jun 1996 21:39:53 +0000
changeset 90 918e2740098c
parent 83 2d61ef3579e4
child 93 2b1e50b70bb1
permissions -rw-r--r--
resolve rewritten
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#JavaUnresolvedConstant
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
     2
	instanceVariableNames:'nextUnresolved prevUnresolved constantPool constantPoolIndex'
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
     3
	classVariableNames:'PatchLists'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
083530508d9c intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Reader-Support'
083530508d9c intitial checkin
cg
parents:
diff changeset
     6
!
083530508d9c intitial checkin
cg
parents:
diff changeset
     7
083530508d9c intitial checkin
cg
parents:
diff changeset
     8
83
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
     9
!JavaUnresolvedConstant  class methodsFor:'instance creation'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    10
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    11
pool:aPool poolIndex:index
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    12
    ^ self new 
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    13
        pool:aPool poolIndex:index
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    14
083530508d9c intitial checkin
cg
parents:
diff changeset
    15
083530508d9c intitial checkin
cg
parents:
diff changeset
    16
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    17
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    18
!JavaUnresolvedConstant  class methodsFor:'queries'!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    19
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    20
countUnresolved
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    21
    |u cnt|
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    22
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    23
    cnt := 0.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    24
    PatchLists do:[:patchList |
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    25
        u := patchList.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    26
        [u notNil] whileTrue:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    27
            cnt := cnt + 1.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    28
            u := u nextUnresolved
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    29
        ]
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    30
    ].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    31
    ^ cnt
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    32
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    33
    "
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    34
     self countUnresolved 
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    35
    "
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    36
! !
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    37
83
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
    38
!JavaUnresolvedConstant  class methodsFor:'resolving'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    39
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    40
flushPatchLists
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    41
    PatchLists := nil
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    42
! !
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    43
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    44
!JavaUnresolvedConstant  class ignoredMethodsFor:'resolving'!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    45
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    46
resolve:aPossiblyUnresolvedConstant from:aConstantTable
083530508d9c intitial checkin
cg
parents:
diff changeset
    47
    (aPossiblyUnresolvedConstant isKindOf:JavaUnresolvedConstant) ifTrue:[
083530508d9c intitial checkin
cg
parents:
diff changeset
    48
        ^ aPossiblyUnresolvedConstant resolveFrom:aConstantTable
083530508d9c intitial checkin
cg
parents:
diff changeset
    49
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
    50
    ^ aPossiblyUnresolvedConstant
083530508d9c intitial checkin
cg
parents:
diff changeset
    51
083530508d9c intitial checkin
cg
parents:
diff changeset
    52
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    53
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    54
!JavaUnresolvedConstant  class methodsFor:'resolving'!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    55
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    56
resolveFor:aJavaClass
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    57
    "a JAVA class has been loaded - resolve what can be"
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    58
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    59
    |patchList unresolved nameSymbol|
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    60
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    61
"/ 'resolving: ' print. aJavaClass fullName printCR.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    62
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    63
    PatchLists isNil ifTrue:[^ self].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    64
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    65
    nameSymbol := aJavaClass fullName asSymbol.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    66
    patchList := PatchLists at:nameSymbol ifAbsent:nil.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    67
    patchList notNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    68
        PatchLists removeKey:nameSymbol.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    69
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    70
        [patchList notNil] whileTrue:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    71
            unresolved := patchList.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    72
            patchList := unresolved nextUnresolved.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    73
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    74
            unresolved prevUnresolved:nil.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    75
            unresolved nextUnresolved:nil.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    76
            unresolved preResolve.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    77
        ]
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    78
    ].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    79
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    80
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    81
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    82
unresolvedClassNames
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    83
    "return a collection of unresolved class names"
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    84
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    85
    PatchLists isNil ifTrue:[^ #()].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    86
    ^ PatchLists keys 
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    87
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    88
    "
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    89
     self unresolvedClassNames 
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    90
    "
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    91
! !
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    92
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    93
!JavaUnresolvedConstant methodsFor:'accessing'!
083530508d9c intitial checkin
cg
parents:
diff changeset
    94
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    95
constantPool
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    96
    ^ constantPool
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    97
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    98
    "Created: 15.4.1996 / 15:59:45 / cg"
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
    99
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   100
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   101
constantPoolIndex
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   102
    ^ constantPoolIndex
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   103
083530508d9c intitial checkin
cg
parents:
diff changeset
   104
    "Created: 15.4.1996 / 15:59:45 / cg"
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   105
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   106
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   107
nextUnresolved
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   108
    ^ nextUnresolved
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   109
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   110
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   111
nextUnresolved:anUnresolvedConstant
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   112
    nextUnresolved := anUnresolvedConstant
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   113
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   114
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   115
pool:aPool poolIndex:i
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   116
    constantPool := aPool.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   117
    constantPoolIndex := i
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   118
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   119
    "Created: 15.4.1996 / 15:59:45 / cg"
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   120
!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   121
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   122
prevUnresolved:anUnresolvedConstant
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   123
    prevUnresolved := anUnresolvedConstant
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   124
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
   125
83
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   126
!JavaUnresolvedConstant methodsFor:'printing & storing'!
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   127
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   128
displayString
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   129
    ^ (self class name) , '( idx= ' , constantPoolIndex printString , ')'
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   130
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   131
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   132
! !
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   133
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   134
!JavaUnresolvedConstant methodsFor:'queries'!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   135
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   136
isUnresolved
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   137
    ^ true
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   138
! !
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   139
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   140
!JavaUnresolvedConstant methodsFor:'resolving'!
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   141
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   142
preResolve
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   143
    self subclassResponsibility.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   144
    ^ self
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   145
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   146
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   147
!
83
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   148
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   149
rememberForResolveWith:aFullClassName
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   150
    |patchList nameSymbol|
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   151
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   152
    prevUnresolved notNil ifTrue:[^ self].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   153
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   154
    PatchLists isNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   155
        PatchLists := IdentityDictionary new.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   156
    ].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   157
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   158
    nameSymbol := aFullClassName asSymbol.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   159
    patchList := PatchLists at:nameSymbol ifAbsent:nil.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   160
    patchList isNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   161
"/        ('first patch for: ' , aFullClassName) printCR.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   162
    ] ifFalse:[
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   163
        patchList prevUnresolved:self.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   164
        nextUnresolved := patchList.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   165
    ].
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   166
    PatchLists at:nameSymbol put:self.
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   167
    prevUnresolved := #startOfList.
83
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   168
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   169
! !
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   170
2d61ef3579e4 *** empty log message ***
cg
parents: 1
diff changeset
   171
!JavaUnresolvedConstant  class methodsFor:'documentation'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   172
083530508d9c intitial checkin
cg
parents:
diff changeset
   173
version
90
918e2740098c resolve rewritten
cg
parents: 83
diff changeset
   174
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaUnresolvedConstant.st,v 1.3 1996/06/28 21:38:26 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   175
! !