JavaObject.st
author cg
Fri, 08 Aug 1997 11:34:22 +0000
changeset 206 2200b9091b9e
parent 202 59b27ac31896
child 229 b91c9462ac83
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
a08fff66123e intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#JavaObject
a08fff66123e intitial checkin
cg
parents:
diff changeset
     2
	instanceVariableNames:''
a08fff66123e intitial checkin
cg
parents:
diff changeset
     3
	classVariableNames:''
a08fff66123e intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
a08fff66123e intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Classes'
a08fff66123e intitial checkin
cg
parents:
diff changeset
     6
!
a08fff66123e intitial checkin
cg
parents:
diff changeset
     7
a08fff66123e intitial checkin
cg
parents:
diff changeset
     8
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
     9
!JavaObject class methodsFor:'misc'!
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    10
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    11
resolveClassRefs
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
    12
!
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
    13
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
    14
resolveClassRefsIgnoring:setOfClasses
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    15
! !
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    16
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
    17
!JavaObject class methodsFor:'smalltalk interface'!
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    18
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    19
convertJavaObject:val signature:retValSignature
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 83
diff changeset
    20
^ val.
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    21
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    22
    retValSignature = 'void' ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    23
        ^ #void
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    24
    ].
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    25
    retValSignature = 'boolean' ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    26
        val == 0 ifTrue:[^ false].
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    27
        ^ true
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    28
    ].
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    29
    retValSignature = 'int' ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    30
        val isInteger ifFalse:[
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    31
            self halt
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    32
        ].
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    33
        ^ val
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    34
    ].
34
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    35
    retValSignature = 'char[]' ifTrue:[
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    36
        "/ these are ST-strings
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    37
        ^ val
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    38
    ].
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    39
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    40
    retValSignature = 'char' ifTrue:[
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    41
        "/ these are ST-characters
40
7f332a95e015 checkin from browser
cg
parents: 34
diff changeset
    42
        val isInteger ifTrue:[
7f332a95e015 checkin from browser
cg
parents: 34
diff changeset
    43
            ^ Character value:val
7f332a95e015 checkin from browser
cg
parents: 34
diff changeset
    44
        ].
7f332a95e015 checkin from browser
cg
parents: 34
diff changeset
    45
        self halt.
34
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    46
        ^ val
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    47
    ].
edb4800567d5 checkin from browser
cg
parents: 33
diff changeset
    48
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    49
    retValSignature = 'Object' ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    50
        ^ val
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    51
    ].
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    52
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    53
    retValSignature = 'String' ifTrue:[
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    54
        ^ Java as_ST_String:val
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    55
    ].
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    56
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    57
    'no conversion for: ' print. val class name print. ' to: ' print. retValSignature printNL.
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    58
    ^ val.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    59
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    60
    "Modified: 8.8.1997 / 12:07:23 / cg"
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    61
!
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
    62
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    63
javaStringFrom:aString
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    64
    "hard-coding internas of java.lang.String here is bad ..."
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    65
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    66
    self halt.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    67
    ^ Java as_String:aString
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    68
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    69
    "Modified: 7.8.1997 / 21:17:32 / cg"
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    70
!
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    71
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    72
stringFromJavaString:aJavaString
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    73
    "hard-coding internas of java.lang.String here is bad ..."
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
    74
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    75
    self halt.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    76
    ^ Java as_ST_String:aJavaString
139
16a56632be42 checkin from browser
cg
parents: 135
diff changeset
    77
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
    78
    "Modified: 8.8.1997 / 12:07:29 / cg"
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    79
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    80
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    81
!JavaObject methodsFor:'initialization'!
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    82
52
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    83
initializeFields:initialValues
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    84
    |sz|
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    85
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    86
    sz := self class instSize.
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    87
    1 to:sz do:[:i |
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    88
        self instVarAt:i put:(initialValues at:i)
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    89
    ]
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    90
!
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    91
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    92
initializeToZero
52
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    93
    |sz|
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    94
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    95
    sz := self class instSize.
1dc41619b6f8 checkin from browser
cg
parents: 48
diff changeset
    96
    1 to:sz do:[:i |
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    97
        self instVarAt:i put:0
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    98
    ]
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
    99
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   100
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   101
!JavaObject methodsFor:'interpreter interface'!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   102
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   103
invoke:selector interpreter:i sender:aContext
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   104
    "send a message, without args"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   105
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   106
    |method cls sel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   107
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   108
    method := self lookupMethod:selector numArgs:0.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   109
    method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   110
        ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   111
            invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   112
            interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   113
            sender:aContext
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   114
            selector:selector
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   115
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   116
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   117
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   118
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   119
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   120
     |stack|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   121
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   122
     stack := (Java at:'java/util/Stack') basicNew.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   123
     stack invoke:#'<init>'. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   124
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   125
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   126
     |stack|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   127
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   128
     stack := (Java at:'java/util/Stack') new.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   129
     stack invoke:#isEmpty. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   130
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   131
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   132
     |stack|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   133
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   134
     stack := (Java at:'java/util/Stack') new.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   135
     stack invoke:#size. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   136
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   137
193
859177de4b04 *** empty log message ***
cg
parents: 175
diff changeset
   138
    "Modified: 1.8.1997 / 21:50:53 / cg"
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   139
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   140
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   141
invoke:selector interpreter:i sender:aContext with:argument
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   142
    "send a message, with 1 argument. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   143
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   144
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   145
    |sel method cls argClass jSel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   146
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   147
    sel := selector asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   148
    sel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   149
        "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   150
        "/ hard to do - must find a matching method probably
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   151
        "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   152
        (argument isKindOf:JavaObject) ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   153
            argClass := argument class.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   154
        ] ifFalse:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   155
            "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   156
            "/ map to Java:
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   157
            "/   String -> [c
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   158
            "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   159
            (argument isMemberOf:String) ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   160
                jSel := (selector , '([C)V') asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   161
                jSel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   162
                    ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   163
                        invoke:jSel 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   164
                        interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   165
                        sender:aContext 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   166
                        with:argument
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   167
                ]
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   168
            ]
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   169
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   170
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   171
        method := self lookupMethod:sel numArgs:1.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   172
        method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   173
            ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   174
                invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   175
                interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   176
                sender:aContext 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   177
                selector:sel
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   178
                with:argument
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   179
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   180
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   181
"/        cls := self class.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   182
"/        [cls notNil and:[cls ~~ JavaObject]] whileTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   183
"/            cls methodDictionary keysAndValuesDo:[:sel :aMethod |
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   184
"/                aMethod name == sel ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   185
"/                    aMethod numArgs == 1 ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   186
"/                        "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   187
"/                        "/ this is not completely correct:
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   188
"/                        "/ must look for the best type-match,
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   189
"/                        "/ (especially: have to look for best match
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   190
"/                        "/  over whole superclass chain ...)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   191
"/                        "/ for now take the first with matching number of args
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   192
"/                        "/
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   193
"/                        ^ self invokeJavaMethod:aMethod with:argument
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   194
"/                    ]
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   195
"/                ]
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   196
"/            ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   197
"/            cls := cls superclass.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   198
"/        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   199
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   200
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   201
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   202
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   203
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   204
     |stack|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   205
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   206
     stack := (Java at:'java/util/Stack') new.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   207
     stack invoke:#push with:1. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   208
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   209
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   210
     |stack|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   211
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   212
     stack := (Java at:'java/util/Stack') new.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   213
     stack invoke:#push with:1. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   214
     stack invoke:#push with:2. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   215
     stack invoke:#pop. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   216
     stack invoke:#pop. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   217
     stack invoke:#pop. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   218
    "
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   219
197
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   220
    "Modified: 5.8.1997 / 02:52:42 / cg"
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   221
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   222
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   223
invoke:selector interpreter:i sender:aContext with:arg1 with:arg2 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   224
    "send a message, with 2 arguments. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   225
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   226
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   227
    |sel method cls argClass jSel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   228
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   229
    sel := selector asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   230
    sel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   231
        method := self lookupMethod:sel numArgs:2.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   232
        method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   233
            ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   234
                invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   235
                interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   236
                sender:aContext
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   237
                selector:selector
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   238
                with:arg1 with:arg2
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   239
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   240
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   241
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   242
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   243
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   244
    "Modified: 30.7.1997 / 13:47:05 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   245
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   246
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   247
invoke:selector interpreter:i sender:aContext with:arg1 with:arg2 with:arg3
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   248
    "send a message, with 3 arguments. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   249
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   250
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   251
    |sel method cls argClass jSel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   252
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   253
    sel := selector asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   254
    sel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   255
        method := self lookupMethod:sel numArgs:3.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   256
        method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   257
            ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   258
                invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   259
                interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   260
                sender:aContext 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   261
                selector:selector
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   262
                with:arg1 with:arg2 with:arg3
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   263
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   264
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   265
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   266
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   267
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   268
    "Modified: 30.7.1997 / 13:47:22 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   269
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   270
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   271
invoke:selector interpreter:i sender:aContext with:arg1 with:arg2 with:arg3 with:arg4
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   272
    "send a message, with 4 arguments. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   273
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   274
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   275
    |sel method cls argClass jSel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   276
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   277
    sel := selector asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   278
    sel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   279
        method := self lookupMethod:sel numArgs:4.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   280
        method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   281
            ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   282
                invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   283
                interpreter:i
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   284
                sender:aContext 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   285
                selector:selector
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   286
                with:arg1 with:arg2 with:arg3 with:arg4
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   287
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   288
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   289
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   290
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   291
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   292
    "Modified: 30.7.1997 / 13:47:45 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   293
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   294
197
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   295
invoke:selector interpreter:i sender:aContext with:arg1 with:arg2 with:arg3 with:arg4 with:arg5
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   296
    "send a message, with 5 arguments. 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   297
     TEMPORARY: This method needs more work."
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   298
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   299
    |sel method cls argClass jSel|
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   300
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   301
    sel := selector asSymbolIfInterned.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   302
    sel notNil ifTrue:[
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   303
        method := self lookupMethod:sel numArgs:5.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   304
        method notNil ifTrue:[
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   305
            ^ self 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   306
                invokeJavaMethod:method 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   307
                interpreter:i 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   308
                sender:aContext 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   309
                selector:selector
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   310
                with:arg1 with:arg2 with:arg3 with:arg4 with:arg5
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   311
        ].
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   312
    ].
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   313
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   314
    ^ super doesNotUnderstand:(Message selector:selector)
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   315
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   316
    "Modified: 3.8.1997 / 20:31:03 / cg"
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   317
!
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   318
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   319
invoke:selector interpreter:i sender:aContext with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   320
    "send a message, with 6 arguments. 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   321
     TEMPORARY: This method needs more work."
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   322
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   323
    |sel method cls argClass jSel|
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   324
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   325
    sel := selector asSymbolIfInterned.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   326
    sel notNil ifTrue:[
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   327
        method := self lookupMethod:sel numArgs:6.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   328
        method notNil ifTrue:[
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   329
            ^ self 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   330
                invokeJavaMethod:method 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   331
                interpreter:i 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   332
                sender:aContext 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   333
                selector:selector
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   334
                with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   335
        ].
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   336
    ].
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   337
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   338
    ^ super doesNotUnderstand:(Message selector:selector)
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   339
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   340
    "Modified: 3.8.1997 / 20:31:03 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   341
    "Created: 7.8.1997 / 20:57:12 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   342
!
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   343
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   344
invoke:selector interpreter:i sender:aContext withAll:arguments
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   345
    "send a message, with arguments. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   346
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   347
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   348
    |sel method cls argClass jSel|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   349
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   350
    sel := selector asSymbolIfInterned.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   351
    sel notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   352
        method := self lookupMethod:sel numArgs:arguments size.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   353
        method notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   354
            ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   355
                invokeJavaMethod:method 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   356
                interpreter:i 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   357
                sender:aContext 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   358
                selector:selector
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   359
                withAll:arguments
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   360
        ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   361
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   362
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   363
    ^ super doesNotUnderstand:(Message selector:selector)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   364
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   365
    "Modified: 30.7.1997 / 13:48:02 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   366
! !
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   367
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   368
!JavaObject methodsFor:'message sending'!
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   369
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   370
doesNotUnderstand:aMessage
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   371
    |args numArgs javaMethod sel arg1 arg2|
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   372
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   373
    args := aMessage arguments.
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   374
    numArgs := args size.
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   375
    sel := aMessage selector.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   376
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   377
    numArgs == 0 ifTrue:[
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   378
        ^ self invoke:sel.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   379
    ].
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   380
    arg1 := args at:1.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   381
    numArgs == 1 ifTrue:[
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   382
        ^ self invoke:sel with:arg1.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   383
    ].
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   384
    arg2 := args at:2.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   385
    numArgs == 2 ifTrue:[
144
b0074284978d checkin from browser
cg
parents: 139
diff changeset
   386
        ^ self invoke:sel with:arg1 with:arg2.
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   387
    ].
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   388
    ^ super doesNotUnderstand:aMessage
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   389
193
859177de4b04 *** empty log message ***
cg
parents: 175
diff changeset
   390
    "Modified: 1.8.1997 / 21:42:31 / cg"
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   391
!
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   392
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   393
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   394
    "invoke a java method, without arguments."
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   395
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   396
    |val|
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   397
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   398
    aJavaMethod numArgs ~~ 0 ifTrue:[
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   399
        self halt:'argument count'
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   400
    ].
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   401
    aJavaMethod isStatic ifTrue:[
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   402
        self halt:'static function'
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   403
    ].
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   404
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   405
    val := aJavaMethod valueWithReceiver:self arguments:#() selector:sel.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   406
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   407
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   408
    i push:self.
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   409
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   410
    val := i interpret:aJavaMethod sender:s.
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   411
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   412
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   413
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   414
    "Modified: 30.7.1997 / 13:20:29 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   415
    "Created: 30.7.1997 / 13:37:25 / cg"
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   416
!
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   417
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   418
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel with:arg1
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   419
    "invoke a java method, with two arguments.
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   420
     CAVEAT: these cannot be long or doubles currently."
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   421
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   422
    |val|
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   423
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   424
    aJavaMethod numArgs ~~ 1 ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   425
        self halt:'argument count'
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   426
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   427
    aJavaMethod isStatic ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   428
        self halt:'static function'
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   429
    ].
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   430
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   431
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1) selector:sel.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   432
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   433
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   434
    i push:self.
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   435
    i push:arg1.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   436
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   437
    val := i interpret:aJavaMethod sender:s.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   438
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   439
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   440
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   441
    "Modified: 30.7.1997 / 13:20:35 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   442
    "Created: 30.7.1997 / 13:41:01 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   443
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   444
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   445
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel with:arg1 with:arg2
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   446
    "invoke a java method, with two arguments.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   447
     CAVEAT: these cannot be long or doubles currently."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   448
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   449
    |val|
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   450
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   451
    aJavaMethod numArgs ~~ 2 ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   452
        self halt:'argument count'
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   453
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   454
    aJavaMethod isStatic ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   455
        self halt:'static function'
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   456
    ].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   457
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   458
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2) selector:sel.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   459
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   460
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   461
    i push:self.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   462
    i push:arg1.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   463
    i push:arg2.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   464
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   465
    val := i interpret:aJavaMethod sender:s.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   466
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   467
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   468
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   469
    "Modified: 30.7.1997 / 13:20:35 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   470
    "Created: 30.7.1997 / 13:36:02 / cg"
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   471
!
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   472
202
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   473
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel with:arg1 with:arg2 with:arg3 with:arg4
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   474
    "invoke a java method, with 4 arguments.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   475
     CAVEAT: these cannot be long or doubles currently."
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   476
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   477
    |val|
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   478
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   479
    aJavaMethod numArgs ~~ 4 ifTrue:[
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   480
        self halt:'argument count'
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   481
    ].
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   482
    aJavaMethod isStatic ifTrue:[
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   483
        self halt:'static function'
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   484
    ].
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   485
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   486
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3 with:arg4) selector:sel.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   487
    val notNil ifTrue:[^ val].
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   488
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   489
    i push:self.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   490
    i push:arg1.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   491
    i push:arg2.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   492
    i push:arg3.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   493
    i push:arg4.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   494
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   495
    val := i interpret:aJavaMethod sender:s.
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   496
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   497
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   498
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   499
    "Modified: 30.7.1997 / 13:20:35 / cg"
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   500
    "Created: 6.8.1997 / 02:41:32 / cg"
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   501
!
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   502
197
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   503
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel with:arg1 with:arg2 with:arg3 with:arg4 with:arg5
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   504
    "invoke a java method, with 5 arguments.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   505
     CAVEAT: these cannot be long or doubles currently."
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   506
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   507
    |val|
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   508
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   509
    aJavaMethod numArgs ~~ 5 ifTrue:[
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   510
        self halt:'argument count'
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   511
    ].
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   512
    aJavaMethod isStatic ifTrue:[
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   513
        self halt:'static function'
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   514
    ].
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   515
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   516
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3 with:arg4 with:arg5) selector:sel.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   517
    val notNil ifTrue:[^ val].
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   518
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   519
    i push:self.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   520
    i push:arg1.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   521
    i push:arg2.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   522
    i push:arg3.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   523
    i push:arg4.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   524
    i push:arg5.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   525
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   526
    val := i interpret:aJavaMethod sender:s.
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   527
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   528
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   529
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   530
    "Modified: 30.7.1997 / 13:20:35 / cg"
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   531
    "Created: 3.8.1997 / 20:32:03 / cg"
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   532
!
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   533
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   534
invokeJavaMethod:aJavaMethod interpreter:i sender:s selector:sel with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   535
    "invoke a java method, with 6 arguments.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   536
     CAVEAT: these cannot be long or doubles currently."
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   537
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   538
    |val|
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   539
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   540
    aJavaMethod numArgs ~~ 6 ifTrue:[
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   541
        self halt:'argument count'
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   542
    ].
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   543
    aJavaMethod isStatic ifTrue:[
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   544
        self halt:'static function'
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   545
    ].
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   546
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   547
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6) selector:sel.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   548
    val notNil ifTrue:[^ val].
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   549
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   550
    i push:self.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   551
    i push:arg1.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   552
    i push:arg2.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   553
    i push:arg3.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   554
    i push:arg4.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   555
    i push:arg5.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   556
    i push:arg6.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   557
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   558
    val := i interpret:aJavaMethod sender:s.
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   559
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   560
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   561
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   562
    "Modified: 30.7.1997 / 13:20:35 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   563
    "Created: 7.8.1997 / 20:57:55 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   564
!
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   565
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   566
invokeJavaMethod:aJavaMethod interpreter:i sender:s with:arg1 with:arg2
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   567
    "invoke a java method, with two arguments.
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   568
     CAVEAT: these cannot be long or doubles currently."
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   569
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   570
    |val|
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   571
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   572
    aJavaMethod numArgs ~~ 2 ifTrue:[
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   573
        self halt:'argument count'
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   574
    ].
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   575
    aJavaMethod isStatic ifTrue:[
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   576
        self halt:'static function'
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   577
    ].
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   578
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   579
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2).
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   580
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   581
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   582
    i push:self.
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   583
    i push:arg1.
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   584
    i push:arg2.
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   585
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   586
    val := i interpret:aJavaMethod sender:s.
44
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   587
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   588
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
331e16746ad6 checkin from browser
cg
parents: 43
diff changeset
   589
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   590
    "Modified: 30.7.1997 / 13:20:35 / cg"
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   591
!
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   592
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   593
invokeJavaMethod:aJavaMethod interpreter:i sender:s with:arg1 with:arg2 with:arg3
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   594
    "invoke a java method, with 3 arguments.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   595
     CAVEAT: these cannot be long or doubles currently."
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   596
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   597
    |val|
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   598
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   599
    aJavaMethod numArgs ~~ 3 ifTrue:[
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   600
        self halt:'argument count'
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   601
    ].
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   602
    aJavaMethod isStatic ifTrue:[
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   603
        self halt:'static function'
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   604
    ].
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   605
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   606
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3).
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   607
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   608
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   609
    i push:self.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   610
    i push:arg1.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   611
    i push:arg2.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   612
    i push:arg3.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   613
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   614
    val := i interpret:aJavaMethod sender:s.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   615
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   616
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   617
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   618
    "Modified: 30.7.1997 / 13:20:44 / cg"
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   619
!
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   620
112
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   621
invokeJavaMethod:aJavaMethod interpreter:i sender:s with:arg1 with:arg2 with:arg3 with:arg4
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   622
    "invoke a java method, with 4 arguments.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   623
     CAVEAT: these cannot be long or doubles currently."
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   624
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   625
    |val|
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   626
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   627
    aJavaMethod numArgs ~~ 4 ifTrue:[
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   628
        self halt:'argument count'
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   629
    ].
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   630
    aJavaMethod isStatic ifTrue:[
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   631
        self halt:'static function'
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   632
    ].
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   633
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   634
    val := aJavaMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3 with:arg4).
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   635
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   636
112
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   637
    i push:self.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   638
    i push:arg1.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   639
    i push:arg2.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   640
    i push:arg3.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   641
    i push:arg4.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   642
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   643
    val := i interpret:aJavaMethod sender:s.
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   644
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   645
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   646
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   647
    "Modified: 30.7.1997 / 13:20:51 / cg"
112
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   648
!
2476753a6940 *** empty log message ***
cg
parents: 101
diff changeset
   649
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   650
invokeJavaMethod:aJavaMethod interpreter:i sender:s withAll:args
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   651
    "invoke a java method, with two arguments.
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   652
     CAVEAT: these cannot be long or doubles currently."
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   653
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   654
    |val|
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   655
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   656
    aJavaMethod numArgs ~~ args size ifTrue:[
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   657
        self halt:'argument count'
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   658
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   659
    aJavaMethod isStatic ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   660
        self halt:'static function'
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   661
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   662
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   663
    val := aJavaMethod valueWithReceiver:self arguments:args.
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   664
    val notNil ifTrue:[^ val].
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   665
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   666
    i push:self.
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   667
    args do:[:arg |
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   668
        i push:arg.
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   669
    ].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   670
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   671
    val := i interpret:aJavaMethod sender:s.
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   672
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   673
    ^ JavaObject convertJavaObject:val signature:(aJavaMethod retValSignature)
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   674
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   675
    "Modified: 30.7.1997 / 13:20:58 / cg"
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   676
!
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   677
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   678
invokeJavaMethod:aJavaMethod with:arg1 with:arg2
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   679
    "invoke a java method, with two arguments.
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   680
     CAVEAT: these cannot be long or doubles currently."
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   681
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   682
    ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   683
        invokeJavaMethod:aJavaMethod 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   684
        interpreter:JavaInterpreter new 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   685
        sender:thisContext sender 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   686
        with:arg1 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   687
        with:arg2
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   688
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   689
    "Modified: 30.7.1997 / 13:25:36 / cg"
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   690
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   691
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   692
!JavaObject methodsFor:'printing & storing'!
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   693
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   694
displayString
166
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   695
    self class == Java java_lang_String ifTrue:[
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   696
        ^ '''' , (Java as_ST_String:self) , ''''
48
1e12f315ed97 checkin from browser
cg
parents: 44
diff changeset
   697
    ].
1e12f315ed97 checkin from browser
cg
parents: 44
diff changeset
   698
101
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   699
    ^ super displayString.
99bc7898a879 pass interpreter down in invokes
cg
parents: 96
diff changeset
   700
96
2b635c23d7dd use java #toString for displaying (if appropriate)
cg
parents: 91
diff changeset
   701
    Object errorSignal handle:[:ex |
2b635c23d7dd use java #toString for displaying (if appropriate)
cg
parents: 91
diff changeset
   702
        ^ super displayString.
2b635c23d7dd use java #toString for displaying (if appropriate)
cg
parents: 91
diff changeset
   703
    ] do:[
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   704
        ^ Java as_ST_String:(self invoke:#toString).
96
2b635c23d7dd use java #toString for displaying (if appropriate)
cg
parents: 91
diff changeset
   705
    ].
2b635c23d7dd use java #toString for displaying (if appropriate)
cg
parents: 91
diff changeset
   706
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   707
    ^ super displayString. "/ ^ 'a JavaObject(' , self class name , ')'
166
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   708
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   709
    "Modified: 8.8.1997 / 12:07:36 / cg"
168
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   710
!
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   711
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   712
javaDisplayString
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   713
    Object errorSignal handle:[:ex |
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   714
        ex return.
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   715
    ] do:[
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   716
        ^ Java as_ST_String:(self invoke:#toString).
168
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   717
    ].
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   718
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   719
    ^ super displayString.
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   720
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   721
    "Created: 7.4.1997 / 17:38:13 / cg"
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   722
    "Modified: 8.8.1997 / 12:07:39 / cg"
166
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   723
! !
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   724
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   725
!JavaObject methodsFor:'queries'!
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   726
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   727
isJavaObject
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   728
    ^ true
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   729
3bb2f7fbd489 checkin from browser
cg
parents: 159
diff changeset
   730
    "Created: 26.3.1997 / 13:34:17 / cg"
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   731
! !
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   732
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   733
!JavaObject methodsFor:'smalltalk interface'!
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   734
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   735
invoke:selector
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   736
    "send a message, without args"
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   737
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   738
    ^ self      
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   739
        invoke:selector 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   740
        interpreter:(JavaInterpreter new) 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   741
        sender:thisContext sender
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   742
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   743
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   744
     |stack|
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   745
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   746
     stack := (Java at:'java/util/Stack') basicNew.
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   747
     stack invoke:#'<init>'. 
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   748
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   749
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   750
     |stack|
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   751
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   752
     stack := (Java at:'java/util/Stack') new.
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   753
     stack invoke:#isEmpty. 
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   754
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   755
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   756
     |stack|
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   757
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   758
     stack := (Java at:'java/util/Stack') new.
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   759
     stack invoke:#size. 
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   760
    "
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   761
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   762
    "Modified: 30.7.1997 / 13:44:34 / cg"
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   763
!
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   764
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   765
invoke:selector sender:aContext
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   766
    "send a message, without args"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   767
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   768
    ^ self      
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   769
        invoke:selector 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   770
        interpreter:(JavaInterpreter new) 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   771
        sender:aContext
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   772
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   773
    "Modified: 30.7.1997 / 13:59:18 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   774
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   775
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   776
invoke:selector with:arg
43
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   777
    "send a message, with 1 argument. 
2c4ca2eb8d07 checkin from browser
cg
parents: 42
diff changeset
   778
     TEMPORARY: This method needs more work."
33
bef781ce106e checkin from browser
cg
parents: 29
diff changeset
   779
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   780
    ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   781
        invoke:selector 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   782
        interpreter:JavaInterpreter new 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   783
        sender:thisContext sender 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   784
        with:arg
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   785
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   786
    "
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   787
     |stack|
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   788
33
bef781ce106e checkin from browser
cg
parents: 29
diff changeset
   789
     stack := (Java at:'java/util/Stack') new.
29
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   790
     stack invoke:#push with:1. 
eb3367f8fb9b checkin from browser
cg
parents: 26
diff changeset
   791
    "
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   792
    "
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   793
     |stack|
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   794
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   795
     stack := (Java at:'java/util/Stack') new.
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   796
     stack invoke:#push with:1. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   797
     stack invoke:#push with:2. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   798
     stack invoke:#pop. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   799
     stack invoke:#pop. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   800
     stack invoke:#pop. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   801
    "
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   802
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   803
    "Modified: 30.7.1997 / 13:44:44 / cg"
83
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   804
!
2d61ef3579e4 *** empty log message ***
cg
parents: 78
diff changeset
   805
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   806
invoke:selector with:arg1 with:arg2
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   807
    "send a message, with 2 argument. 
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   808
     TEMPORARY: This method needs more work."
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   809
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   810
    ^ self 
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   811
        invoke:selector 
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   812
        interpreter:JavaInterpreter new 
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   813
        sender:thisContext sender 
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   814
        with:arg1
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   815
        with:arg2
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   816
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   817
    "Modified: 30.7.1997 / 13:44:58 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   818
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   819
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   820
invoke:selector with:arg1 with:arg2 with:arg3
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   821
    "send a message, with 3 argument. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   822
     TEMPORARY: This method needs more work."
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   823
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   824
    ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   825
        invoke:selector 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   826
        interpreter:JavaInterpreter new 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   827
        sender:thisContext sender 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   828
        with:arg1
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   829
        with:arg2
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   830
        with:arg3
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   831
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   832
    "Modified: 30.7.1997 / 13:44:58 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   833
    "Created: 30.7.1997 / 13:48:24 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   834
!
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   835
202
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   836
invoke:selector with:arg1 with:arg2 with:arg3 with:arg4
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   837
    "send a message, with 5 argument. 
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   838
     TEMPORARY: This method needs more work."
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   839
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   840
    ^ self 
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   841
        invoke:selector 
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   842
        interpreter:JavaInterpreter new 
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   843
        sender:thisContext sender 
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   844
        with:arg1
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   845
        with:arg2
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   846
        with:arg3
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   847
        with:arg4
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   848
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   849
    "Modified: 30.7.1997 / 13:44:58 / cg"
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   850
    "Created: 6.8.1997 / 02:38:44 / cg"
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   851
!
59b27ac31896 *** empty log message ***
cg
parents: 197
diff changeset
   852
197
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   853
invoke:selector with:arg1 with:arg2 with:arg3 with:arg4 with:arg5
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   854
    "send a message, with 5 argument. 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   855
     TEMPORARY: This method needs more work."
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   856
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   857
    ^ self 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   858
        invoke:selector 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   859
        interpreter:JavaInterpreter new 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   860
        sender:thisContext sender 
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   861
        with:arg1
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   862
        with:arg2
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   863
        with:arg3
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   864
        with:arg4
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   865
        with:arg5
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   866
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   867
    "Modified: 30.7.1997 / 13:44:58 / cg"
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   868
    "Created: 3.8.1997 / 20:30:22 / cg"
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   869
!
97fa933db02f *** empty log message ***
cg
parents: 193
diff changeset
   870
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   871
invoke:selector with:arg1 with:arg2 with:arg3 with:arg4 with:arg5 with:arg6
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   872
    "send a message, with 6 argument. 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   873
     TEMPORARY: This method needs more work."
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   874
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   875
    ^ self 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   876
        invoke:selector 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   877
        interpreter:JavaInterpreter new 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   878
        sender:thisContext sender 
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   879
        with:arg1
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   880
        with:arg2
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   881
        with:arg3
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   882
        with:arg4
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   883
        with:arg5
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   884
        with:arg6
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   885
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   886
    "Modified: 30.7.1997 / 13:44:58 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   887
    "Created: 7.8.1997 / 20:56:49 / cg"
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   888
!
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   889
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   890
invoke:selector withAll:args
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   891
    "send a message, with anumber of arguments. 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   892
     TEMPORARY: This method needs more work."
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   893
175
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   894
    ^ self 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   895
        invoke:selector 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   896
        interpreter:JavaInterpreter new 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   897
        sender:thisContext sender 
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   898
        withAll:args
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   899
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   900
    "Modified: 30.7.1997 / 13:44:58 / cg"
68da52e100ab *** empty log message ***
cg
parents: 168
diff changeset
   901
    "Created: 30.7.1997 / 13:56:33 / cg"
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   902
!
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   903
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   904
lookupMethod:selector numArgs:nargs
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   905
    "lookup a method"
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   906
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   907
    |method cls sel|
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   908
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   909
    sel := selector.
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   910
    (sel includes:$:) ifTrue:[
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   911
        sel := sel copyTo:(sel indexOf:$:)-1    
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   912
    ].
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   913
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   914
    sel := sel asSymbolIfInterned.
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   915
    sel notNil ifTrue:[
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   916
        cls := self class.
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   917
        [cls notNil and:[cls ~~ JavaObject]] whileTrue:[
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   918
            cls methodDictionary keysAndValuesDo:[:jSel :aMethod |
159
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   919
                (jSel == sel ) ifTrue:[
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   920
                    ^ aMethod
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   921
                ]
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   922
            ].
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   923
            cls methodDictionary keysAndValuesDo:[:jSel :aMethod |
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   924
                (aMethod name = sel 
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   925
                or:[aMethod signatureNameWithoutReturnType = sel]) ifTrue:[
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   926
                    aMethod numArgs == nargs ifTrue:[
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   927
                        ^ aMethod
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   928
                    ]
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   929
                ]
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   930
            ].
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   931
            cls := cls superclass.
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   932
        ].
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   933
    ].
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   934
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   935
    ^ nil
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   936
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   937
    "
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   938
     |stack|
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   939
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   940
     stack := (Java at:'java.util.Stack') basicNew.
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   941
     stack lookupMethod:#'<init>' numArgs:0. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   942
    "
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   943
    "
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   944
     |stack|
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   945
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   946
     stack := (Java at:'java.util.Stack') new.
78
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   947
     stack lookupMethod:#isEmpty numArgs:0. 
ef7b6b87d4ce *** empty log message ***
cg
parents: 69
diff changeset
   948
    "
113
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   949
    "
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   950
     |frame|
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   951
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   952
     frame := (Java at:'java.awt.Frame') new.
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   953
     frame lookupMethod:#'<init> (String)' numArgs:1. 
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   954
    "
481bf55e161e *** empty log message ***
cg
parents: 112
diff changeset
   955
159
dde38c50ec86 *** empty log message ***
cg
parents: 144
diff changeset
   956
    "Modified: 22.3.1997 / 00:56:54 / cg"
26
a08fff66123e intitial checkin
cg
parents:
diff changeset
   957
! !
a08fff66123e intitial checkin
cg
parents:
diff changeset
   958
133
adaf7cad0bc2 checkin from browser
cg
parents: 113
diff changeset
   959
!JavaObject class methodsFor:'documentation'!
26
a08fff66123e intitial checkin
cg
parents:
diff changeset
   960
a08fff66123e intitial checkin
cg
parents:
diff changeset
   961
version
206
2200b9091b9e *** empty log message ***
cg
parents: 202
diff changeset
   962
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaObject.st,v 1.32 1997/08/08 11:34:22 cg Exp $'
26
a08fff66123e intitial checkin
cg
parents:
diff changeset
   963
! !