JavaMethodref.st
author cg
Mon, 06 May 1996 14:21:57 +0000
changeset 52 1dc41619b6f8
parent 41 eb7974d88088
child 63 74442cd26c02
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
JavaRef subclass:#JavaMethodref
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
     2
	instanceVariableNames:'method sel'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     3
	classVariableNames:''
083530508d9c intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
4
07264ed96b97 checkin from browser
cg
parents: 1
diff changeset
     5
	category:'Java-Reader-Support'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     6
!
083530508d9c intitial checkin
cg
parents:
diff changeset
     7
083530508d9c intitial checkin
cg
parents:
diff changeset
     8
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
     9
!JavaMethodref methodsFor:'accessing'!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    10
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    11
name
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    12
    ^ nameandType name.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    13
!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    14
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    15
selector
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    16
    sel isNil ifTrue:[
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    17
        sel := (nameandType name , nameandType signature) asSymbol.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    18
    ].
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    19
    ^ sel
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    20
!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    21
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    22
signature
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    23
    ^ nameandType signature.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    24
! !
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    25
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    26
!JavaMethodref methodsFor:'printing & storing'!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    27
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    28
displayString
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    29
    ^ 'JavaMethodRef (' , class displayString , ' ' 
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    30
                        , '''' , nameandType name , '''' , nameandType signature , ')'
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    31
! !
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    32
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    33
!JavaMethodref methodsFor:'resolving'!
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    34
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    35
method
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    36
    |nm sig mthd|
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    37
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    38
    method notNil ifTrue:[^ method].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    39
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    40
    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    41
        class := class resolve
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    42
    ].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    43
    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    44
        self halt.
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    45
    ].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    46
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    47
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    48
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    49
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    50
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    51
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    52
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    53
"/ 'search in: ' print. class fullName print. ' for ' print. nm print. ' sig: ' print. sig printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    54
    class selectorArray keysAndValuesDo:[:idx :mSel |
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    55
"/ idx print. ' 'print. sel printNL.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    56
        sel == mSel ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    57
            ^ class methodArray at:idx.
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    58
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    59
"/            mthd := class methodArray at:idx.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    60
"/ 'try: ' print. mthd signatureName printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    61
"/            mthd signature = sig ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    62
"/                method := mthd.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    63
"/                ^ mthd
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    64
"/            ]
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    65
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    66
        ]
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    67
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    68
    self halt.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    69
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    70
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    71
methodFor:aClass
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    72
    |nm sig mthd cls|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    73
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    74
    cls := aClass.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    75
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    76
    (cls isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
52
1dc41619b6f8 checkin from browser
cg
parents: 41
diff changeset
    77
        cls := cls resolve
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    78
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    79
    (cls isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    80
        self halt.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    81
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    82
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    83
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    84
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    85
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    86
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    87
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    88
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    89
    [cls notNil] whileTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    90
        cls selectorArray keysAndValuesDo:[:idx :mSel |
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    91
"/ idx print. ' 'print. sel printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    92
            sel == mSel ifTrue:[
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    93
                ^ cls methodArray at:idx.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    94
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    95
"/                mthd := cls methodArray at:idx.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    96
"/                mthd signature = sig ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    97
"/                    method := mthd.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    98
"/                    ^ mthd
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    99
"/                ]
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   100
            ]
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   101
        ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   102
        cls := cls superclass
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   103
    ].
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
   104
    ^ nil
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   105
! !
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   106
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   107
!JavaMethodref class methodsFor:'documentation'!
083530508d9c intitial checkin
cg
parents:
diff changeset
   108
083530508d9c intitial checkin
cg
parents:
diff changeset
   109
version
52
1dc41619b6f8 checkin from browser
cg
parents: 41
diff changeset
   110
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethodref.st,v 1.8 1996/05/06 14:21:11 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   111
! !