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