JavaMethodref.st
author cg
Wed, 01 May 1996 16:22:55 +0000
changeset 29 eb3367f8fb9b
parent 27 4560bb77bb36
child 41 eb7974d88088
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
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
     9
!JavaMethodref methodsFor:'resolving'!
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    10
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    11
method
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    12
    |nm sig mthd|
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    13
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    14
    method notNil ifTrue:[^ method].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    15
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    16
    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    17
        class := class resolve
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    18
    ].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    19
    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    20
        self halt.
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    21
    ].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    22
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    23
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    24
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    25
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    26
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    27
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    28
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    29
"/ 'search in: ' print. class fullName print. ' for ' print. nm print. ' sig: ' print. sig printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    30
    class selectorArray keysAndValuesDo:[:idx :mSel |
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    31
"/ idx print. ' 'print. sel printNL.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    32
        sel == mSel ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    33
            ^ class methodArray at:idx.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    34
"/            mthd := class methodArray at:idx.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    35
"/ 'try: ' print. mthd signatureName printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    36
"/            mthd signature = sig ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    37
"/                method := mthd.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    38
"/                ^ mthd
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    39
"/            ]
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    40
        ]
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    41
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    42
    self halt.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    43
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    44
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    45
methodFor:aClass
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    46
    |nm sig mthd cls|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    47
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    48
    cls := aClass.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    49
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    50
    (cls isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    51
        class := class resolve
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    52
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    53
    (cls isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    54
        self halt.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    55
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    56
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    57
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    58
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    59
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    60
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    61
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    62
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    63
    [cls notNil] whileTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    64
        cls selectorArray keysAndValuesDo:[:idx :mSel |
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    65
"/ idx print. ' 'print. sel printNL.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    66
            sel == mSel ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    67
                ^ class methodArray at:idx.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    68
"/                mthd := class methodArray at:idx.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    69
"/                mthd signature = sig ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    70
"/                    method := mthd.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    71
"/                    ^ mthd
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    72
"/                ]
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    73
            ]
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    74
        ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    75
        cls := cls superclass
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    76
    ].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    77
    self halt.
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    78
! !
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    79
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    80
!JavaMethodref class methodsFor:'documentation'!
083530508d9c intitial checkin
cg
parents:
diff changeset
    81
083530508d9c intitial checkin
cg
parents:
diff changeset
    82
version
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    83
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethodref.st,v 1.6 1996/05/01 16:22:32 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    84
! !