src/JavaNameAndType2.st
author vranyj1
Tue, 10 May 2011 21:04:10 +0000
branchjk_new_structure
changeset 771 fb8026dda011
parent 761 43e017ec7958
child 772 0f92c23b80ee
permissions -rw-r--r--
Merged with /trunk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:libjava' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     2
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
     3
JavaConstantPoolContent subclass:#JavaNameAndType2
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
     4
	instanceVariableNames:'nameIndex descriptorIndex name descriptor'
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     5
	classVariableNames:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     6
	poolDictionaries:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     7
	category:'Languages-Java-Reader-Support-new'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     8
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     9
758
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    10
!JavaNameAndType2 class methodsFor:'documentation'!
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    11
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    12
documentation
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    13
"
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    14
    I represent NameAndTypeInfo structure found in java constant pool. 
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    15
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    16
    [author:]
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    17
        Marcel Hlopko <hlopkmar@fel.cvut.cz>
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    18
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    19
    [instance variables:]
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    20
        name - string found in constant pool at nameIndex. Represents field or method name.
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    21
        descriptor - string found in constant pool at descIndex. Represents field or method type.
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    22
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    23
    [class variables:]
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    24
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    25
    [see also:]
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    26
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    27
"
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    28
! !
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    30
!JavaNameAndType2 class methodsFor:'instance creation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    31
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    32
in: aJavaConstantPool withNameAt: arg1 andDescriptorAt: arg2 
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    33
    "Create & return a new instance for arg."
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    34
    
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    35
    ^ self basicNew 
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    36
        initializeIn: aJavaConstantPool
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    37
        withNameAt: arg1
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    38
        andDescriptorAt: arg2
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    39
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    40
    "Created: / 10-05-2011 / 15:45:28 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    41
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    42
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    43
!JavaNameAndType2 methodsFor:'accessing'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    44
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    45
descriptor
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    46
    descriptor ifNil: [self resolve].
758
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    47
    ^ descriptor.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    48
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    49
    "Created: / 08-04-2011 / 11:55:33 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    50
    "Modified: / 10-05-2011 / 15:46:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    51
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    52
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    53
name
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    54
    name ifNil: [self resolve].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    55
    ^ name.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    56
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    57
    "Created: / 08-04-2011 / 11:55:23 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    58
    "Modified: / 10-05-2011 / 15:49:59 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
761
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
    59
!
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
    60
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
    61
selector
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    62
    self isResolved ifFalse: [ self resolve ].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    63
    ^ (name , descriptor) asSymbol.
761
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
    64
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
    65
    "Created: / 11-04-2011 / 21:31:27 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    66
    "Modified: / 10-05-2011 / 17:29:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    67
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    68
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
!JavaNameAndType2 methodsFor:'comparing'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    70
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    71
= aNameAndType 
758
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    72
    name ~= aNameAndType name ifTrue: [ ^ false ].
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    73
    ^ descriptor = aNameAndType descriptor.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    74
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    75
    "Created: / 08-04-2011 / 11:56:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    76
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    77
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    78
hash
758
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
    79
    ^ name hash bitXor: descriptor hash.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    80
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    81
    "Created: / 08-04-2011 / 11:57:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    82
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    83
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    84
!JavaNameAndType2 methodsFor:'initialization'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    85
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    86
initializeIn: aJavaConstantPool withNameAt: nameCPIndex andDescriptorAt: descriptorCPIndex 
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    87
    nameIndex := nameCPIndex.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    88
    descriptorIndex := descriptorCPIndex.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    89
    constantPool := aJavaConstantPool.
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    90
    super initialize.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    91
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    92
    "Created: / 10-05-2011 / 15:45:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    93
! !
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    94
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    95
!JavaNameAndType2 methodsFor:'printing'!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    96
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    97
printString
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    98
^ 'JavaNameAndType name=' , name printString , ' descriptor= ' , descriptor printString.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
    99
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   100
    "Created: / 10-05-2011 / 14:17:38 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   101
! !
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   102
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   103
!JavaNameAndType2 methodsFor:'queries'!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   104
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   105
isJavaNameAndType
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   106
    "return true, if given object represents name and type struct in java constant pool"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   107
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   108
    ^ true.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   109
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   110
    "Created: / 10-05-2011 / 12:23:45 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   111
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   112
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   113
isNewJavaNameAndType
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   114
    "only temporary, to know if name and type is old (claus' version) or new (m version)"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   115
    
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   116
    ^ true.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   117
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   118
    "Created: / 10-05-2011 / 12:24:16 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   119
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   120
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   121
isResolved
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   122
    name ifNil: [^ false].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   123
    descriptor ifNil: [^ false].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   124
    ^ true.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   125
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   126
    "Created: / 10-05-2011 / 17:27:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   127
! !
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   128
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   129
!JavaNameAndType2 methodsFor:'resolving'!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   130
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   131
findResolvedStaticValue
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   132
    self halt: 'should not need - ask mh'.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   133
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   134
    "Created: / 10-05-2011 / 17:26:59 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   135
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   136
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   137
findResolvedValue
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   138
    name := constantPool at: nameIndex.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   139
    descriptor := constantPool at: descriptorIndex.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   140
    name ifNil: [ self warning: 'name nil in ' , self printString ].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   141
    descriptor 
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   142
            ifNil: [ self warning: 'descriptor nil in ' , self printString ].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   143
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   144
    "Created: / 10-05-2011 / 17:27:08 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   145
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   146
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   147
invalidate
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   148
    name := nil.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   149
    descriptor := nil.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   150
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   151
    "Created: / 10-05-2011 / 17:28:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   152
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   153
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   154
invalidateForClass: arg 
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   155
    self halt: 'should not need - tell mh'.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   156
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   157
    "Created: / 10-05-2011 / 17:28:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   158
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   159
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   160
resolve
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   161
    (name isNil or: [descriptor isNil]) ifTrue: [self findResolvedValue].
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   162
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   163
    "Created: / 10-05-2011 / 15:46:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   164
    "Modified: / 10-05-2011 / 17:28:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   165
!
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   166
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   167
resolveStatic
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   168
   ^ self resolve.
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   169
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   170
    "Created: / 10-05-2011 / 17:25:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   171
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   172
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   173
!JavaNameAndType2 class methodsFor:'documentation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   174
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   175
version_SVN
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   176
    ^ '$Id$'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   177
! !
758
be8e84381ce0 Merged with /branches/jk
vranyj1
parents: 752
diff changeset
   178
761
43e017ec7958 Merged with /branches/jk
vranyj1
parents: 758
diff changeset
   179
771
fb8026dda011 Merged with /trunk
vranyj1
parents: 761
diff changeset
   180