Message.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 24389 3ec8fdee7d8e
child 24761 b17fed2fa6dd
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24389
3ec8fdee7d8e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 21530
diff changeset
     1
"{ Encoding: utf8 }"
3ec8fdee7d8e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 21530
diff changeset
     2
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     4
 COPYRIGHT (c) 1988 by Claus Gittinger
362
claus
parents: 159
diff changeset
     5
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
"
5591
08ada63daf2a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
    14
"{ Package: 'stx:libbasic' }"
08ada63daf2a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
    15
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    16
"{ NameSpace: Smalltalk }"
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    17
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    18
Object subclass:#Message
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    19
	instanceVariableNames:'selector args'
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    20
	classVariableNames:''
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    21
	poolDictionaries:''
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    22
	category:'Kernel-Methods'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    25
!Message class methodsFor:'documentation'!
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    26
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    27
copyright
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    28
"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    29
 COPYRIGHT (c) 1988 by Claus Gittinger
362
claus
parents: 159
diff changeset
    30
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    32
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    33
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    35
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    36
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    37
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    38
"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    39
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    40
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    41
documentation
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    42
"
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    43
    Instances of Message represent a message being sent, consisting of
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    44
    the message selector and the message arguments.
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    45
1268
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    46
    During normal execution, message objects are NEVER used -
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    47
    instead, argument passing is done more performant via the stack
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    48
    or in registers (depends on how your C compiler passes arguments).
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    49
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    50
    However, messageObjects ARE created, when a message send fails 
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    51
    (i.e. some message is not understood).
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    52
    In this case, the selector and arguments of the failing message
1268
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    53
    are squashed into a new instance of Message, and a #doesNotUnderstand: 
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    54
    message is sent to the original receiver, passing the message object
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    55
    as argument.
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    56
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    57
    Typically, #doesNotUnderstand: is not redefined in the receiver's class,
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    58
    so the lookup finds Object>>doesNotUnderstand: and this is evaluated.
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    59
    There, a debugger is opened on the suspended thread (actually, it is a little
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    60
    more complicated: actually a MessageNotUnderstood exception is raised there,
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    61
    which - if not handled by an exception handler - opens the debugger).
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    62
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    63
    However, it is possible and common to redefine the doesNotUnderstand method, 
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    64
    which allows for re-evaluation of the failed send (after some cleanup),
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    65
    to upload some code, to forward the message to another destination,
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    66
    or to simply ignore the error.
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
    67
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
    68
    As an example of its use, see the implementation of the Autoload-class,
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
    69
    or how ScrollableView forwards unknown messages to its slave-view.
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
    70
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    71
    Elegance hint: as mentioned above, Object>>doesNotUnderstand: actually
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    72
    raises an exception which can be handled. In many situations, providing 
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    73
    an exception handler instead of redefining #doesNotUnderstand is the 
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    74
    better way to do things.
1268
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    75
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    76
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
    77
    Notice:
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    78
    The layout of Message-objects is known by the runtime system (VM)
1268
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    79
    (it has to create those objects in case of a failure)
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
    80
    so it is not allowed to change the definition of this class.
1268
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    81
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    82
    [See also:]
38b3714d9eaf commentary
Claus Gittinger <cg@exept.de>
parents: 1264
diff changeset
    83
        Signal  Exception  MessageSend
1293
02fb05148c98 documentation
Claus Gittinger <cg@exept.de>
parents: 1268
diff changeset
    84
02fb05148c98 documentation
Claus Gittinger <cg@exept.de>
parents: 1268
diff changeset
    85
    [author:]
02fb05148c98 documentation
Claus Gittinger <cg@exept.de>
parents: 1268
diff changeset
    86
        Claus Gittinger
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    87
"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    88
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    89
a27a279701f8 Initial revision
claus
parents:
diff changeset
    90
!Message class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    91
a27a279701f8 Initial revision
claus
parents:
diff changeset
    92
selector:aSymbol
a27a279701f8 Initial revision
claus
parents:
diff changeset
    93
    "return a new message object for a send without arguments"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    94
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
    95
    ^ self basicNew setSelector:aSymbol arguments:nil
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    96
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    97
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    98
selector:aSymbol argument:anArg
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    99
    "return a new message object for a send with one argument"
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   100
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   101
    ^ self basicNew setSelector:aSymbol arguments:(Array with:anArg)
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   102
!
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   103
5751
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   104
selector:aSymbol argument:arg1 argument:arg2
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   105
    "return a new message object for a send with two arguments"
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   106
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   107
    ^ self basicNew setSelector:aSymbol arguments:(Array with:arg1 with:arg2)
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   108
!
ceba525a9c2a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   109
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   110
selector:aSymbol arguments:argArray
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   111
    "return a new message object for a send with many arguments"
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   112
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   113
    ^ self basicNew setSelector:aSymbol arguments:argArray
8323
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   114
! !
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   115
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   116
!Message class methodsFor:'obsolete'!
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   117
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   118
selector:aSymbol with:anArg
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   119
    "return a new message object for a send with one argument.
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   120
     OBSOLETE: use #selector:argument: for ST-80 compatibility."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   121
8323
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   122
    <resource:#obsolete>
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   123
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   124
    ^ self basicNew setSelector:aSymbol arguments:(Array with:anArg)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   125
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   126
a27a279701f8 Initial revision
claus
parents:
diff changeset
   127
selector:aSymbol with:arg1 with:arg2
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   128
    "return a new message object for a send with two arguments.
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   129
     OBSOLETE: use #selector:arguments: for ST-80 compatibility."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   130
8323
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   131
    <resource:#obsolete>
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   132
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   133
    ^ self basicNew setSelector:aSymbol arguments:(Array with:arg1 with:arg2)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   134
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   135
a27a279701f8 Initial revision
claus
parents:
diff changeset
   136
selector:aSymbol withAll:argArray
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   137
    "return a new message object for a send with many arguments.
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   138
     OBSOLETE: use #selector:arguments: for ST-80 compatibilty."
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   139
8323
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   140
    <resource:#obsolete>
9efd1beceb1f MArk obsolete messages
Stefan Vogel <sv@exept.de>
parents: 7257
diff changeset
   141
159
514c749165c3 *** empty log message ***
claus
parents: 152
diff changeset
   142
    ^ self basicNew setSelector:aSymbol arguments:argArray
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   143
! !
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   144
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   145
!Message class methodsFor:'queries'!
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   146
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   147
isBuiltInClass
1264
8d916aa63bce commentary
Claus Gittinger <cg@exept.de>
parents: 1183
diff changeset
   148
    "return true if this class is known by the run-time-system.
8d916aa63bce commentary
Claus Gittinger <cg@exept.de>
parents: 1183
diff changeset
   149
     Here, true is returned for myself, false for subclasses."
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   150
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   151
    ^ self == Message
1264
8d916aa63bce commentary
Claus Gittinger <cg@exept.de>
parents: 1183
diff changeset
   152
8d916aa63bce commentary
Claus Gittinger <cg@exept.de>
parents: 1183
diff changeset
   153
    "Modified: 23.4.1996 / 15:59:30 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   154
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   155
8439
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   156
!Message methodsFor:'Compatibility-Dolphin'!
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   157
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   158
value:aReceiver
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   159
    "evaluate myself for receiver.
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   160
     Same as #sendTo: - compatibility with Dolphin"
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   161
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   162
    ^ aReceiver perform:selector withArguments:args
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   163
! !
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   164
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   165
!Message methodsFor:'Compatibility-GNU'!
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   166
8489
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   167
reinvokeFor:aReceiver
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   168
    "send the selector with argument to a receiver.
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   169
     Same as sendTo: - for GNU-ST compatibility."
8439
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   170
8489
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   171
    ^ self sendTo:aReceiver
8439
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   172
! !
46c0b9613466 Dolphin compatibility: #value:
Stefan Vogel <sv@exept.de>
parents: 8323
diff changeset
   173
8579
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   174
!Message methodsFor:'Compatibility-Squeak'!
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   175
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   176
argument
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   177
    "return the 1st argument of the message"
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   178
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   179
    args size == 1 ifFalse:[
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   180
        self error:'Not a 1-arg message'
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   181
    ].
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   182
    ^ args at:1
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   183
! !
da7c9101e7a4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8489
diff changeset
   184
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   185
!Message methodsFor:'accessing'!
10
claus
parents: 5
diff changeset
   186
6253
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   187
arg1
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   188
    "return the first argument of the message"
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   189
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   190
    ^ args at:1
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   191
!
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   192
8687
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   193
argumentCount
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   194
    "VisualAge/ANSI compatibility: return the number of arguments of the message"
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   195
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   196
    ^ args size
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   197
!
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8579
diff changeset
   198
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   199
arguments
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   200
    "return the arguments of the message"
19888
1e9b0fd58bc9 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 17523
diff changeset
   201
    
1e9b0fd58bc9 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 17523
diff changeset
   202
    args isNil ifTrue:[^ #()].
1e9b0fd58bc9 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 17523
diff changeset
   203
    ^ args.
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   204
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   205
10584
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   206
arguments:argArray
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   207
    "set arguments of the receiver"
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   208
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   209
    args := argArray
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   210
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   211
    "Created: / 31-05-2007 / 17:53:10 / cg"
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   212
!
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   213
6253
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   214
numArgs
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   215
    "return the number of arguments of the message"
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   216
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   217
    ^ args size
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   218
!
15f294576641 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6062
diff changeset
   219
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   220
selector
a27a279701f8 Initial revision
claus
parents:
diff changeset
   221
    "return the selector of the message"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   222
a27a279701f8 Initial revision
claus
parents:
diff changeset
   223
    ^ selector
10584
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   224
!
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   225
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   226
selector:aSymbol
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   227
    selector := aSymbol
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   228
42caa67c49c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   229
    "Created: / 31-05-2007 / 17:53:06 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   230
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   231
93
e31220cb391f *** empty log message ***
claus
parents: 88
diff changeset
   232
!Message methodsFor:'printing & storing'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   233
14287
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   234
displayOn:aGCOrStream
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   235
    "Compatibility
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   236
     append a printed desription on some stream (Dolphin,  Squeak)
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   237
     OR:
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   238
     display the receiver in a graphicsContext at 0@0 (ST80).
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   239
     This method allows for any object to be displayed in some view
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   240
     (although the fallBack is to display its printString ...)"
56
be0ed17e6f85 *** empty log message ***
claus
parents: 10
diff changeset
   241
14287
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   242
    "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
21530
655a47664154 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 20183
diff changeset
   243
    "/ old ST80 means: draw-yourself on a GC.
14287
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   244
    aGCOrStream isStream ifFalse:[
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   245
        ^ super displayOn:aGCOrStream.
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   246
    ].
1833
9762af784d22 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1293
diff changeset
   247
14287
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   248
    aGCOrStream 
24389
3ec8fdee7d8e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 21530
diff changeset
   249
        nextPutAll:self className;
14287
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   250
        nextPut:$(.
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   251
    selector storeOn:aGCOrStream. 
d172b79d6ebb Implement #displayOn: instead of #displayString
Stefan Vogel <sv@exept.de>
parents: 10584
diff changeset
   252
    aGCOrStream nextPut:$)
21530
655a47664154 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 20183
diff changeset
   253
655a47664154 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 20183
diff changeset
   254
    "Modified (comment): / 22-02-2017 / 16:46:38 / cg"
24389
3ec8fdee7d8e #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 21530
diff changeset
   255
    "Modified: / 28-06-2019 / 09:04:11 / Claus Gittinger"
56
be0ed17e6f85 *** empty log message ***
claus
parents: 10
diff changeset
   256
!
be0ed17e6f85 *** empty log message ***
claus
parents: 10
diff changeset
   257
be0ed17e6f85 *** empty log message ***
claus
parents: 10
diff changeset
   258
printOn:aStream
4392
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 1833
diff changeset
   259
    "append a user printed representation of the receiver to aStream.
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 1833
diff changeset
   260
     The format is suitable for a human - not meant to be read back."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   261
56
be0ed17e6f85 *** empty log message ***
claus
parents: 10
diff changeset
   262
    selector printOn:aStream
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   263
! !
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   264
7257
b9f0fb923c72 method category rename
Claus Gittinger <cg@exept.de>
parents: 6933
diff changeset
   265
!Message methodsFor:'private-accessing'!
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   266
6933
998dc32a3f6d + setSelector
penk
parents: 6253
diff changeset
   267
setSelector:aSymbol
998dc32a3f6d + setSelector
penk
parents: 6253
diff changeset
   268
    selector := aSymbol.
998dc32a3f6d + setSelector
penk
parents: 6253
diff changeset
   269
!
998dc32a3f6d + setSelector
penk
parents: 6253
diff changeset
   270
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   271
setSelector:aSymbol arguments:argArray
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   272
    "set selector and arguments of the receiver"
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   273
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   274
    selector := aSymbol.
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   275
    args := argArray
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   276
! !
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   277
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   278
!Message methodsFor:'sending'!
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   279
8489
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   280
sendTo:aReceiver
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
   281
    "send the selector with argument(s) to aReceiver"
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   282
8489
d555f1a72960 category change
Stefan Vogel <sv@exept.de>
parents: 8439
diff changeset
   283
    ^ aReceiver perform:selector withArguments:args
20183
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   284
!
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   285
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   286
sendTo:aReceiver usingClass:aClass
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   287
    "send the selector with argument(s) to aReceiver using the method named by selector from aClass"
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   288
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   289
    ^ (aClass compiledMethodAt:selector) valueWithReceiver:aReceiver arguments:args selector:selector
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   290
!
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   291
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   292
sendTo:aReceiver usingMethod:aMethod
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   293
    "send the selector with argument(s) to aReceiver using compiledMethod aMethod"
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   294
65d17c828c3a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 19888
diff changeset
   295
    ^ aMethod valueWithReceiver:aReceiver arguments:args selector:selector
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   296
! !
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   297
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   298
!Message class methodsFor:'documentation'!
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   299
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   300
version
19888
1e9b0fd58bc9 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 17523
diff changeset
   301
    ^ '$Header$'
1183
e3d58d115e53 subclasses of fixed classes are still possible
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   302
! !
17523
d921c9ecef2f class: Message
Claus Gittinger <cg@exept.de>
parents: 14287
diff changeset
   303