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