QuerySignal.st
author Claus Gittinger <cg@exept.de>
Sat, 18 May 1996 17:32:43 +0200
changeset 1422 9a0b792f2953
parent 1379 bde210aaccc2
child 1534 3aac2f9ef96c
permissions -rw-r--r--
showCr: -> showCR:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
420
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     1
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     3
	      All Rights Reserved
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     4
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    11
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    12
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    13
Signal subclass:#QuerySignal
1248
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    14
	instanceVariableNames:''
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    15
	classVariableNames:''
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    16
	poolDictionaries:''
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    17
	category:'Kernel-Exceptions'
420
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    18
!
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    19
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    20
!QuerySignal class methodsFor:'documentation'!
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    21
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    22
copyright
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    23
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1995 by Claus Gittinger
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    25
	      All Rights Reserved
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    26
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    33
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    34
!
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    35
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    36
documentation
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    37
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    38
    QuerySignals are like signals, except that they are not accepted
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    39
    by handlers for ordinary signals.
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
    40
    I.e. a signal handler for a normal signal will not handle a query
580
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    41
    signal. Thus, these bypass anySignal handlers.
1248
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    42
    If unhandled, no error is raised, instead they are simply ignored
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    43
    (as opposed to normal signals, which raise an unhandled signal exception).
1363
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    44
    QuerySignals are also ignored, if a handler exists, but rejects.
1248
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    45
1363
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    46
    Their main use is to implement up-Queries via signals, that work even 
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    47
    if intermediate errorSignal handlers are present 
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    48
    (which is not possible with ordinary signals, since errorSignal handlers 
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    49
     would catch those signals).
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    50
1248
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    51
    Code deep down in the calling hierarchy can post such an up-Query to ask
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    52
    for some information in return or to pass some information upward. 
580
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    53
1248
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    54
    For example, the activityNotification mechanism is built on top of this:
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    55
    everyone can send such a notification which is either handled by someone
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    56
    up in the hierarchy (to show it in the windows info area) or simply
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    57
    ignored.
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    58
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    59
    Using QuerySignals for this (instead of regular Signals) helps in documenting
04639edf1064 commentary
Claus Gittinger <cg@exept.de>
parents: 691
diff changeset
    60
    the intended usage of those signals.
1275
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1249
diff changeset
    61
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1249
diff changeset
    62
    [see also:]
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1249
diff changeset
    63
        Signal SignalSet Exception
2079f4776628 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1249
diff changeset
    64
        Object
1363
Claus Gittinger <cg@exept.de>
parents: 1316
diff changeset
    65
        (``Exception handling and signals'': programming/exceptions.html)
1292
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    66
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    67
    [author:]
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1275
diff changeset
    68
        Claus Gittinger
580
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    69
"
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    70
!
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    71
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    72
examples 
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    73
"
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    74
  an up-query from a deeply nested operation to a higher level:
1316
248a8cb2ae3b examples
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
    75
                                                                        [exBegin]
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    76
    |querySignal zero|
580
03852d320a48 commentary
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
    77
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    78
    zero := 0.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    79
    querySignal := QuerySignal new.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    80
    querySignal handle:[:ex |
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
    81
        Transcript showCR:'query'.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    82
        ex proceedWith:true
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    83
    ] do:[
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    84
        'nesting'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    85
        [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    86
            [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    87
                Object errorSignal handle:[:ex |
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
    88
                    Transcript showCR:'some error: ' , ex errorString.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    89
                    ex proceed
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    90
                ] do:[
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    91
                    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    92
                        1 // zero.  'an error which is cought in the handler'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    93
                        (querySignal raise) == true ifTrue:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
    94
                            Transcript showCR:'query says: ok'.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    95
                        ] ifFalse:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
    96
                            Transcript showCR:'query says: no'
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    97
                        ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    98
                    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
    99
                ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   100
            ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   101
        ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   102
    ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   103
                                                                        [exEnd]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   104
  an up-query from a deeply nested operation, for which there
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   105
  is no handler:
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   106
  (notice, this would not work with normal signals, which would raise
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   107
   another unhandled exception-exception;
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   108
   also notice the == check #raise's return value being true,
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   109
   instead of a simple ifTrue; this handles a nil-value from
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   110
   the unhandled query)
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   111
                                                                        [exBegin]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   112
    |querySignal zero|
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   113
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   114
    zero := 0.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   115
    querySignal := QuerySignal new.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   116
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   117
    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   118
        'nesting'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   119
        [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   120
            [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   121
                Object errorSignal handle:[:ex |
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   122
                    Transcript showCR:'some error: ' , ex errorString.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   123
                    ex proceed
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   124
                ] do:[
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   125
                    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   126
                        1 // zero.  'an error which is cought in the handler'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   127
                        (querySignal raise) == true ifTrue:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   128
                            Transcript showCR:'query says: ok'.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   129
                        ] ifFalse:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   130
                            Transcript showCR:'query says: no'
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   131
                        ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   132
                    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   133
                ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   134
            ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   135
        ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   136
    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   137
                                                                         [exEnd]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   138
  counter-example, just to show that things would not work this way
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   139
  with regular signals:
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   140
                                                                        [exBegin]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   141
    |signal|
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   142
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   143
    signal := Signal new.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   144
    'nesting deeply'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   145
    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   146
        [
1316
248a8cb2ae3b examples
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
   147
            [
248a8cb2ae3b examples
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
   148
                [
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   149
                    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   150
                        (signal raise) == true ifTrue:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   151
                            Transcript showCR:'query says: ok'.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   152
                        ] ifFalse:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   153
                            Transcript showCR:'query says: no'
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   154
                        ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   155
                    ] value
1316
248a8cb2ae3b examples
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
   156
                ] value
248a8cb2ae3b examples
Claus Gittinger <cg@exept.de>
parents: 1292
diff changeset
   157
            ] value
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   158
        ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   159
    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   160
                                                                         [exEnd]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   161
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   162
   except, by handling the unhandled exception
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   163
   (but we think, that querySignals are easier to use and
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   164
    better document the intent):
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   165
                                                                        [exBegin]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   166
    |signal|
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   167
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   168
    signal := Signal new.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   169
    'nesting deeply'.
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   170
    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   171
        [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   172
            [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   173
                [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   174
                    [
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   175
                        Signal noHandlerSignal handle:[:ex |
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   176
                            ex proceedWith:nil
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   177
                        ] do:[
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   178
                            (signal raise) == true ifTrue:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   179
                                Transcript showCR:'query says: ok'.
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   180
                            ] ifFalse:[
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   181
                                Transcript showCR:'query says: no'
1379
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   182
                            ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   183
                        ]
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   184
                    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   185
                ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   186
            ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   187
        ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   188
    ] value
bde210aaccc2 examples
Claus Gittinger <cg@exept.de>
parents: 1363
diff changeset
   189
                                                                         [exEnd]
420
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   190
"
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   191
! !
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   192
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   193
!QuerySignal methodsFor:'queries'!
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   194
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   195
accepts:aSignal
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   196
    "return true, if the receiver accepts the argument, aSignal.
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   197
     (i.e. the receiver is aSignal or a parent of it). False otherwise."
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   198
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   199
    |s|
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   200
421
claus
parents: 420
diff changeset
   201
    aSignal isQuerySignal ifFalse:[^ false].
420
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   202
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   203
    s := aSignal.
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   204
    [s notNil] whileTrue:[
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   205
	self == s ifTrue:[^ true].
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   206
	s := s parent
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   207
    ].
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   208
    ^ false
691
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   209
!
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   210
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   211
isQuerySignal
1249
2d5d0edd3359 commentary
Claus Gittinger <cg@exept.de>
parents: 1248
diff changeset
   212
    "return true, if this is a querySignal - always return true here"
2d5d0edd3359 commentary
Claus Gittinger <cg@exept.de>
parents: 1248
diff changeset
   213
691
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   214
    ^ true
1249
2d5d0edd3359 commentary
Claus Gittinger <cg@exept.de>
parents: 1248
diff changeset
   215
2d5d0edd3359 commentary
Claus Gittinger <cg@exept.de>
parents: 1248
diff changeset
   216
    "Modified: 22.4.1996 / 13:45:10 / cg"
420
081f7b2bb3b3 Initial revision
claus
parents:
diff changeset
   217
! !
691
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   218
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   219
!QuerySignal class methodsFor:'documentation'!
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   220
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   221
version
1422
9a0b792f2953 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 1379
diff changeset
   222
    ^ '$Header: /cvs/stx/stx/libbasic/QuerySignal.st,v 1.13 1996-05-18 15:29:41 cg Exp $'
691
55730898da50 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
   223
! !