JavaMethodref.st
author cg
Mon, 01 Jul 1996 13:43:40 +0000
changeset 100 4b0da648dcc5
parent 90 918e2740098c
child 114 3f796855d7d4
permissions -rw-r--r--
*** empty log message ***
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
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    16
self halt.
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    17
    sel isNil ifTrue:[
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    18
        sel := (nameandType name , nameandType signature) asSymbol.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    19
    ].
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    20
    ^ sel
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    21
!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    22
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    23
signature
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    24
    ^ nameandType signature.
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    25
! !
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    26
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    27
!JavaMethodref methodsFor:'printing & storing'!
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    28
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    29
displayString
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    30
    ^ 'JavaMethodRef (' , class displayString , ' ' 
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    31
                        , '''' , nameandType name , '''' , nameandType signature , ')'
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    32
! !
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    33
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    34
!JavaMethodref methodsFor:'resolving'!
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    35
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    36
method
87
e9d58a151a63 *** empty log message ***
cg
parents: 71
diff changeset
    37
    |nm sig mthd cls|
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    38
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    39
    method notNil ifTrue:[^ method].
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    40
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    41
    cls := class javaClass.
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    42
    cls ~~ class ifTrue:[
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    43
        class := cls.
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    44
    ].
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    45
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    46
"/    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    47
"/        cls := class resolve.
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    48
"/        cls notNil ifTrue:[
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    49
"/            class := cls
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    50
"/        ]
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    51
"/    ].
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    52
"/    (class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    53
"/        self halt:'unresolved class'.
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    54
"/    ].
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    55
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    56
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    57
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    58
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    59
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    60
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
    61
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    62
"/ 'search in: ' print. class fullName print. ' for ' print. nm print. ' sig: ' print. sig printNL.
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
    63
63
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
    64
    mthd := class compiledMethodAt:sel.
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
    65
    mthd notNil ifTrue:[^ mthd].
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
    66
    self halt:'no such method found'.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    67
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    68
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    69
methodFor:aClass
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    70
    |nm sig mthd cls|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    71
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    72
    cls := aClass.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    73
71
feb1b4907dd4 *** empty log message ***
cg
parents: 63
diff changeset
    74
    cls == Array ifTrue:[
feb1b4907dd4 *** empty log message ***
cg
parents: 63
diff changeset
    75
        cls := Java classNamed:'java.lang.Object'.
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    76
    ] ifFalse:[
100
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    77
        cls == UndefinedObject ifTrue:[
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    78
            cls := Java classNamed:'java.lang.Object'.
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    79
        ] ifFalse:[
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    80
            cls isBehavior ifTrue:[
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    81
                cls isMeta ifTrue:[
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    82
                    cls := cls soleInstance.
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    83
                ].
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    84
                (cls isKindOf:JavaClass) ifFalse:[
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    85
                    self halt:'not a javaClass'.
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    86
                    self internalError:'not a javaClass'.
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    87
                ]
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    88
            ].
100
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
    89
    "/        cls := cls javaClass.
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    90
        ].
71
feb1b4907dd4 *** empty log message ***
cg
parents: 63
diff changeset
    91
    ].
feb1b4907dd4 *** empty log message ***
cg
parents: 63
diff changeset
    92
90
918e2740098c resolve rewritten
cg
parents: 87
diff changeset
    93
    cls isUnresolved ifTrue:[
87
e9d58a151a63 *** empty log message ***
cg
parents: 71
diff changeset
    94
        self halt:'unresolved class'.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    95
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    96
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    97
    sel isNil ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    98
        nm := nameandType name asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    99
        sig := nameandType signature.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   100
        sel := (nm , sig) asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   101
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   102
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   103
    [cls notNil] whileTrue:[
63
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
   104
        mthd := cls compiledMethodAt:sel.
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
   105
        mthd notNil ifTrue:[^ mthd].
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
   106
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   107
        cls := cls superclass
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   108
    ].
71
feb1b4907dd4 *** empty log message ***
cg
parents: 63
diff changeset
   109
41
eb7974d88088 checkin from browser
cg
parents: 29
diff changeset
   110
    ^ nil
27
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   111
! !
4560bb77bb36 checkin from browser
cg
parents: 13
diff changeset
   112
63
74442cd26c02 changes for new methodDict
cg
parents: 52
diff changeset
   113
!JavaMethodref  class methodsFor:'documentation'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   114
083530508d9c intitial checkin
cg
parents:
diff changeset
   115
version
100
4b0da648dcc5 *** empty log message ***
cg
parents: 90
diff changeset
   116
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethodref.st,v 1.13 1996/07/01 13:43:40 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   117
! !