SignalSet.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Jan 2013 01:30:00 +0000
branchjv
changeset 18011 deb0c3355881
parent 17911 a99f15c5efa5
parent 12063 06d27daa7280
child 18045 c0c600e0d3b3
permissions -rw-r--r--
Merged branch 'default' (CVS HEAD)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
159
514c749165c3 *** empty log message ***
claus
parents: 95
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
"
5836
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    12
"{ Package: 'stx:libbasic' }"
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    13
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    14
IdentitySet subclass:#SignalSet
1275
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    15
	instanceVariableNames:''
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    16
	classVariableNames:'SetOfAnySignal'
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    17
	poolDictionaries:''
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    18
	category:'Kernel-Exceptions'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    21
!SignalSet class methodsFor:'documentation'!
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    22
88
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    23
copyright
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    24
"
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    25
 COPYRIGHT (c) 1993 by Claus Gittinger
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    26
	      All Rights Reserved
88
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    27
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    28
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    29
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    31
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    32
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    33
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    34
"
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    35
!
81dacba7a63a *** empty log message ***
claus
parents: 71
diff changeset
    36
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    37
documentation
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    38
"
71
a42874820e27 *** empty log message ***
claus
parents: 44
diff changeset
    39
    SignalSet allows catching of multiple signals. A SignalSet consists of
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    40
    a number of signals and also implements the #handle:do: and #catch: methods
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    41
    just as signals do. 
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    42
    However, any signal from the SignalSet will, if signalled, lead into the handler.
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    43
71
a42874820e27 *** empty log message ***
claus
parents: 44
diff changeset
    44
    There is also a special signalSet, which can be used to catch any
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    45
    signal in the system - but this should no longer be used, since catching
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    46
    Object>>errorSignal has now the same effect.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    47
71
a42874820e27 *** empty log message ***
claus
parents: 44
diff changeset
    48
    For more detail, see comment in Signal and examples in doc/coding.
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
    49
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    50
    Notice: SignalSets are not needed when a group of children of a common signal
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    51
    (such as arithmeticSignal) is to be handled; the parent signal of those will
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    52
    also handle all children.
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    53
    Use signalSets if totally unrelated signals should be handled by one common
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    54
    handler.
1275
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    55
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    56
1292
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    57
    [author:]
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    58
        Claus Gittinger
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    59
1275
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    60
    [see also:]
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    61
        Exception 
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    62
        Signal QuerySignal
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
    63
        Object
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    64
"
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    65
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    66
a27a279701f8 Initial revision
claus
parents:
diff changeset
    67
!SignalSet class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    68
a27a279701f8 Initial revision
claus
parents:
diff changeset
    69
anySignal
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
    70
    "return a special signalSet for catching any signal.
2283
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    71
     Questionable:
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    72
        you should use 'Object>>errorSignal' for that purpose;
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    73
        however, the anySignal-set also catches nonChilds of the ErrorSignal
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    74
        (i.e. highly private, strange signals)."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    75
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    76
    SetOfAnySignal isNil ifTrue:[
2283
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    77
        SetOfAnySignal := self basicNew
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    78
    ].
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
    79
    ^ SetOfAnySignal
2283
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    80
a1b388277558 commentary
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    81
    "Modified: 27.1.1997 / 20:31:08 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    82
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    83
5836
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    84
!SignalSet methodsFor:'adding'!
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    85
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    86
, anException
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    87
    "add anException to the set"
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    88
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    89
    self add:anException
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    90
! !
e8265b824b8f Add signals to SignalSets with #,
Stefan Vogel <sv@exept.de>
parents: 4547
diff changeset
    91
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    92
!SignalSet methodsFor:'queries'!
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    93
8681
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
    94
accepts:anExceptionHandler
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    95
    "return true, if the receiver accepts the argument, aSignal.
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    96
     (i.e. if any of the receivers elements is aSignal or a parent of it).
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    97
     False otherwise. The special anySet accepts any (non-query) signal."
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    98
8681
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
    99
    (self == SetOfAnySignal) ifTrue:[^ anExceptionHandler isQuerySignal not].
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   100
    self do:[:eachExceptionHandler | 
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   101
        (eachExceptionHandler==anExceptionHandler 
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   102
         or:[eachExceptionHandler accepts:anExceptionHandler]) ifTrue:[^ true].
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   103
    ].
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   104
    ^ false
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   105
!
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   106
8681
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   107
exceptionHandlerFor:anException in:aContext
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   108
    "answer the exceptionHandler for anException from aContext."
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   109
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   110
    ^ self
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   111
!
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   112
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   113
handlerForSignal:signal context:theContext originator:originator
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   114
    "answer the handler block for the signal from originator.
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   115
     The block is retrieved from aContext.
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   116
     Answer nil if the signal is not handled"
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   117
8699
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   118
    |selector arg|
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   119
8699
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   120
    selector := theContext selector.
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   121
    (selector ~~ #'handle:from:do:'
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   122
     or:[(theContext argAt:2) == originator]) ifTrue:[
4512
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
   123
        (self == signal or:[self accepts:signal]) ifTrue:[
8699
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   124
            arg := theContext argAt:1.
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   125
            selector == #answer:do: ifTrue:[
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   126
                ^ [:ex| ex proceedWith:arg].
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   127
            ] ifFalse:[
11639
0677f68d6604 changed #handlerForSignal:context:originator:
Stefan Vogel <sv@exept.de>
parents: 9079
diff changeset
   128
                ^ arg ? [nil].
8699
ed6792665e78 Care for #answer:do: handlers. Must proceed.
Stefan Vogel <sv@exept.de>
parents: 8696
diff changeset
   129
            ].
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   130
        ]
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   131
    ].
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   132
    ^ nil
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   133
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   134
    "Created: / 25.7.1999 / 23:46:48 / stefan"
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   135
!
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   136
4545
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   137
handlerProtectedBlock:doBlock inContext:context
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   138
    "set the handlerProtectedBlock in context"
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   139
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   140
    context selector == #handle:do: ifTrue:[
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   141
        context argAt:2 put:doBlock.
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   142
    ] ifFalse:[context selector == #handle:from:do: ifTrue:[
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   143
        context argAt:3 put:doBlock.
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   144
    ]].
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   145
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   146
    "
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   147
      SignalSet anySignal
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   148
          handle:[:ex| ex restartDo:[55]] do:[1 // 0]
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   149
    "
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   150
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   151
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   152
    "Created: / 25.7.1999 / 23:46:48 / stefan"
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   153
!
9671c4448040 Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4512
diff changeset
   154
8681
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   155
handles:anException
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   156
    "return true, if the receiver handles the argument, anException.
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   157
     (i.e. if any of the receivers elements handles anException)."
4473
793078981f01 added #handlingSignalInContext:
Claus Gittinger <cg@exept.de>
parents: 4465
diff changeset
   158
8681
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   159
    self == SetOfAnySignal ifTrue:[^ anException isNotification not].
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   160
    self do:[:eachExceptionHandler| 
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   161
        (eachExceptionHandler handles:anException) ifTrue:[^ true]
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   162
    ].
38aa963476a5 Support for Block>>#on:do:on:do:
Stefan Vogel <sv@exept.de>
parents: 6631
diff changeset
   163
    ^ false
4473
793078981f01 added #handlingSignalInContext:
Claus Gittinger <cg@exept.de>
parents: 4465
diff changeset
   164
!
793078981f01 added #handlingSignalInContext:
Claus Gittinger <cg@exept.de>
parents: 4465
diff changeset
   165
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   166
includes:aSignal
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   167
    "return true, if the receiver contains the argument, aSignal.
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   168
     The special any-Set includes every (non-query) signal."
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   169
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   170
    (self == SetOfAnySignal) ifTrue:[
6631
5ffa1ce7b2cc #isExceptionCreator instead of #isSignal
Stefan Vogel <sv@exept.de>
parents: 6518
diff changeset
   171
        ^ (aSignal isExceptionCreator and:[aSignal isQuerySignal not])
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   172
    ].
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   173
    ^ super includes:aSignal
6518
3f00b9908c8f +isSignalOrSignalSet
Claus Gittinger <cg@exept.de>
parents: 6428
diff changeset
   174
!
3f00b9908c8f +isSignalOrSignalSet
Claus Gittinger <cg@exept.de>
parents: 6428
diff changeset
   175
6631
5ffa1ce7b2cc #isExceptionCreator instead of #isSignal
Stefan Vogel <sv@exept.de>
parents: 6518
diff changeset
   176
isExceptionHandler
5ffa1ce7b2cc #isExceptionCreator instead of #isSignal
Stefan Vogel <sv@exept.de>
parents: 6518
diff changeset
   177
    "return true, if the receiver responds to the exception handler protocol,
5ffa1ce7b2cc #isExceptionCreator instead of #isSignal
Stefan Vogel <sv@exept.de>
parents: 6518
diff changeset
   178
     especially to the #accepts: and #handles: messages"
6518
3f00b9908c8f +isSignalOrSignalSet
Claus Gittinger <cg@exept.de>
parents: 6428
diff changeset
   179
3f00b9908c8f +isSignalOrSignalSet
Claus Gittinger <cg@exept.de>
parents: 6428
diff changeset
   180
    ^ true
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   181
! !
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   182
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   183
!SignalSet methodsFor:'save evaluation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   184
8689
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   185
answer:someAnswer do:aBlock
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   186
    "evaluate the argument, aBlock.
12063
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   187
     If the receiver is queried during evaluation, answer and proceed with someAnswer.
8689
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   188
     This is a wrapper for #handle:do: for lazy typists; no new functionality."
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   189
8696
fd361ae49596 #answer:do: must be returnable (see last change)
Stefan Vogel <sv@exept.de>
parents: 8689
diff changeset
   190
    <context: #return>
8689
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   191
    <exception: #handle>
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   192
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   193
    "/ thisContext markForHandle. -- same as above pragma
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   194
    ^ aBlock value.  "the real logic is in Exception>>doRaise"
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   195
!
1fe8db422f77 SignalSet implements #answer:do:
Stefan Vogel <sv@exept.de>
parents: 8681
diff changeset
   196
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   197
catch:aBlock
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   198
    "evaluate the argument, aBlock.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   199
     If any of the signals in the receiver is raised during evaluation, 
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   200
     abort the evaluation and return true; otherwise return false. 
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   201
     With the special anySignal, evaluation can be performed totally save 
9079
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   202
     from signals - but who (beside radical c++ fans) would do that ?"
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   203
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   204
    |raiseOccurred|
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   205
9079
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   206
    raiseOccurred := false.
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   207
    self handle:[:ex | raiseOccurred := true. ex return] do:aBlock.
1d9020d87c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8699
diff changeset
   208
    ^ raiseOccurred
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   209
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   210
     "
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   211
      SignalSet anySignal catch:[
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   212
         (#(1 2 3 4) at:5) / 0.0
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   213
      ]
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   214
     "
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   215
!
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   216
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   217
deferAfter:aBlock
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   218
    "evaluate the argument, aBlock.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   219
     Ignore the receiver-signal during evaluation - i.e. simply continue,
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   220
     but remember if the signal was raised.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   221
     After the block evaluation, finally raise the signal - if it was raised in the block.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   222
     If the signal is raised multiple times, only the first raises parameter is remembered,
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   223
     and only a single raise is performed after the blocks evaluation.
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   224
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   225
     Deferring makes sense for some signals, such as UserInterrupt or AbortSignal, 
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   226
     which must occasionally be delayed temprarily until a save place is reached 
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   227
     (especially when packages are sent across a communication channel, and you dont want
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   228
      partial packages to be generated by user interruptions)."
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   229
6428
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   230
    |coughtException result|
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   231
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   232
    self handle:[:ex |
6428
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   233
        coughtException isNil ifTrue:[
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   234
            coughtException := ex.
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   235
        ].
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   236
        ex proceedWith:nil
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   237
    ] do:[
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   238
        result := aBlock value.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   239
    ].
6428
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   240
    coughtException notNil ifTrue:[
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   241
        coughtException suspendedContext:thisContext.
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   242
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   243
        "/ a signal was raised during the execution of aBlock above. 
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   244
        "/ Raise it now (delayed).
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   245
        coughtException raiseSignal
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   246
    ].
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   247
    ^ result
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   248
6428
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   249
    "
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   250
     (UserInterrupt , AbortOperationRequest) deferAfter:[
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   251
         Transcript showCR:'1 - now raising, but will be deferred.'.
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   252
         UserInterrupt raiseRequestWith:'hello'.
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   253
         Transcript showCR:'2 - after the raise, deferred exception will be handled soon.'.
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   254
     ].
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   255
     Transcript showCR:'3 - here after the protected block.'.
8c32b1beb8b4 better impl. of #deferAfter:
Claus Gittinger <cg@exept.de>
parents: 6396
diff changeset
   256
    "
622
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   257
!
a17084b7ac06 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   258
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   259
handle:handleBlock do:aBlock
a27a279701f8 Initial revision
claus
parents:
diff changeset
   260
    "evaluate the argument, aBlock.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   261
     If any of the signals in the receiver is raised during evaluation,
a27a279701f8 Initial revision
claus
parents:
diff changeset
   262
     evaluate the handleBlock passing it an Exception argument.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   263
     The handler may decide how to react to the signal by sending
a27a279701f8 Initial revision
claus
parents:
diff changeset
   264
     a corresponding message to the exception (see there).
a27a279701f8 Initial revision
claus
parents:
diff changeset
   265
     If the signal is not raised, return the value of evaluating
a27a279701f8 Initial revision
claus
parents:
diff changeset
   266
     aBlock."
a27a279701f8 Initial revision
claus
parents:
diff changeset
   267
4547
082a2f7d9d8e Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4545
diff changeset
   268
    <context: #return>
4491
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   269
    <exception: #handle>
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   270
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   271
    "/ thisContext markForHandle. -- same as above pragma
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   272
    ^ aBlock value  "the real logic is in Exception>>doRaise"
95
d22739a0c6e9 *** empty log message ***
claus
parents: 88
diff changeset
   273
4491
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   274
    "
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   275
     SignalSet anySignal handle:[:ex |
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   276
        ex errorString print. ' occured in: ' print. ex suspendedContext printNL.
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   277
        ex return
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   278
     ] do:[
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   279
        (#(1 2 3 4) at:5) / 0.0
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   280
     ]
4465
8dfbc6d6ccf3 Add example.
Stefan Vogel <sv@exept.de>
parents: 4464
diff changeset
   281
4491
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   282
     SignalSet anySignal handle:[:ex |
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   283
        ex errorString print. ' occured in: ' print. ex suspendedContext printNL.
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   284
        self bar.
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   285
        ex return
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   286
     ] do:[
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   287
        (#(1 2 3 4) at:5) / 0.0
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   288
     ]
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   289
    "
3308
a6848d4b875d Comments
Stefan Vogel <sv@exept.de>
parents: 2284
diff changeset
   290
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   291
    "Modified: / 26.7.1999 / 00:03:13 / stefan"
44
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
   292
!
b262907c93ea *** empty log message ***
claus
parents: 41
diff changeset
   293
362
claus
parents: 259
diff changeset
   294
handle:handleBlock from:anObject do:aBlock
claus
parents: 259
diff changeset
   295
    "evaluate the argument, aBlock.
claus
parents: 259
diff changeset
   296
     If any of the signals in the receiver is raised during evaluation,
claus
parents: 259
diff changeset
   297
     and the exception originated from anObject,
claus
parents: 259
diff changeset
   298
     evaluate the handleBlock passing it an Exception argument.
claus
parents: 259
diff changeset
   299
     The handler may decide how to react to the signal by sending
claus
parents: 259
diff changeset
   300
     a corresponding message to the exception (see there).
claus
parents: 259
diff changeset
   301
     If the signal is not raised, return the value of evaluating
claus
parents: 259
diff changeset
   302
     aBlock."
claus
parents: 259
diff changeset
   303
4547
082a2f7d9d8e Add #handlerProtectedBlock:inContext
Stefan Vogel <sv@exept.de>
parents: 4545
diff changeset
   304
    <context: #return>
4491
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   305
    <exception: #handle>
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   306
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   307
    "/ thisContext markForHandle. -- same as above pragma
5041cae5651c use new pragma to flag exception frames.
Claus Gittinger <cg@exept.de>
parents: 4486
diff changeset
   308
    ^ aBlock value  "the real logic is in Exception>>doRaise"
3308
a6848d4b875d Comments
Stefan Vogel <sv@exept.de>
parents: 2284
diff changeset
   309
4464
cec93c942c14 Use context flag for exception handling instead of searching for
Stefan Vogel <sv@exept.de>
parents: 3311
diff changeset
   310
    "Modified: / 26.7.1999 / 00:03:06 / stefan"
362
claus
parents: 259
diff changeset
   311
!
claus
parents: 259
diff changeset
   312
2284
8b29d42bb03d oops - renamed #ignore: to #ignoreIn:
Claus Gittinger <cg@exept.de>
parents: 2283
diff changeset
   313
ignoreIn:aBlock
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   314
    "evaluate the argument, aBlock.
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   315
     Ignore the any signals from the receiver during evaluation - i.e. simply
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   316
     continue. This makes only sense for some signals, such as UserInterrupt
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   317
     or AbortSignals, because continuing after an exception without any cleanup
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   318
     will often lead to followup-errors."
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
   319
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   320
     ^ self handle:[:ex | ex proceedWith:nil] do:aBlock.
159
514c749165c3 *** empty log message ***
claus
parents: 95
diff changeset
   321
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   322
     "
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   323
      SignalSet anySignal ignoreIn:[
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   324
         123 size open   
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   325
      ]
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   326
     "
2284
8b29d42bb03d oops - renamed #ignore: to #ignoreIn:
Claus Gittinger <cg@exept.de>
parents: 2283
diff changeset
   327
6396
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   328
     "Created: / 27.1.1997 / 20:32:50 / cg"
74d5b0b588a6 added deferAfter: - defer exceptions until some later time
Claus Gittinger <cg@exept.de>
parents: 5836
diff changeset
   329
     "Modified: / 4.3.1998 / 16:36:30 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   330
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   331
696
d11342e8b7ad checkin from browser
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   332
!SignalSet class methodsFor:'documentation'!
d11342e8b7ad checkin from browser
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   333
d11342e8b7ad checkin from browser
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   334
version
12063
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   335
    ^ '$Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009-10-01 07:38:40 cg Exp $'
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   336
!
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   337
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   338
version_CVS
06d27daa7280 changed: #answer:do:
Claus Gittinger <cg@exept.de>
parents: 11639
diff changeset
   339
    ^ '$Header: /cvs/stx/stx/libbasic/SignalSet.st,v 1.45 2009-10-01 07:38:40 cg Exp $'
696
d11342e8b7ad checkin from browser
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   340
! !