FilteringStream.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 5246 bfd51179c98a
permissions -rw-r--r--
#FEATURE by cg class: Socket class added: #newTCPclientToHost:port:domain:domainOrder:withTimeout: changed: #newTCPclientToHost:port:domain:withTimeout:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     1
"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     2
 COPYRIGHT (c) 1996 by Claus Gittinger
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
     3
	      All Rights Reserved
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     4
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     5
 This software is furnished under a license and may be used
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     6
 only in accordance with the terms of that license and with the
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     8
 be provided or otherwise made available to, or used by, any
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
     9
 other person.  No title to or ownership of the software is
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    10
 hereby transferred.
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    11
"
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    12
"{ Package: 'stx:libbasic2' }"
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    13
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
    14
"{ NameSpace: Smalltalk }"
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
    15
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    16
PeekableStream subclass:#FilteringStream
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    17
	instanceVariableNames:'inputStream outputStream filter readAhead'
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    20
	category:'Streams-Misc'
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    23
!FilteringStream class methodsFor:'documentation'!
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    24
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    25
copyright
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    26
"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    27
 COPYRIGHT (c) 1996 by Claus Gittinger
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
    28
	      All Rights Reserved
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    29
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    30
 This software is furnished under a license and may be used
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    31
 only in accordance with the terms of that license and with the
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    33
 be provided or otherwise made available to, or used by, any
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    34
 other person.  No title to or ownership of the software is
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    35
 hereby transferred.
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    36
"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    37
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    38
!
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    39
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    40
documentation
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    41
"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    42
    A FilteringStream can be connected to some input
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    43
    (from which elements are read via the ReadStream protocol),
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    44
    and/or to some output (to which elements are written via
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    45
    the WriteStream protocol.
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    46
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    47
    The FilteringStream itself performs filtering/processing
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    48
    on the elements as they arrive, optionally suppressing
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    49
    elements.
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    50
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    51
    A FilteringStream can be operated in pull-mode, by asking
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    52
    it for the next element; it will then ask its inputStream for
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    53
    and element, process it and return it.
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    54
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    55
    Or, in pushMode, by having someone else writing elements via
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    56
    nextPut:; it will then process the element, and send it to its
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    57
    output stream.
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    58
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    59
    Mixing modes does not make sense, since if pulled, data will not
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    60
    be written to the outputStream (unless the puller does it).
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    61
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    62
    The connected streams need not be real streams; anything which
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    63
    responds to the basic Stream protocol can be connected
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
    64
    (a Transcript, a RandomNumber generator or even a Plug will do as well).
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    65
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    66
    Similar, but not quite the same as SelectingReadStream / CollectingReadStream.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    67
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    68
    [instance variables:]
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    69
        inputStream     <Stream>  the stream from which elements are read
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    70
        outputStream    <Stream>  the stream to which elements are written
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    71
        filter          <Block>   the filter block;
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    72
        unbound         <Boolean> if true, the stream is unbound.
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    73
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    74
    [author:]
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    75
        Claus Gittinger
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    76
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    77
    [See also:]
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    78
        ReadStream WriteStream
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    79
"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
    80
!
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
examples
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
"
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    84
  pushing the contents of a stream onto another stream
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    85
  (here, the Transcript) without a need to read everything into a
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    86
  buffer or to reinvent the read-loop:
479
9653144c97b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
    87
  (notice, a FilteringLineStream does this with less overhead,
9653144c97b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 477
diff changeset
    88
   due to the byte-wise reading done here)
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    89
                                                                [exBegin]
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    90
    |in pusher|
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    91
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    92
    in := 'Make.proto' asFilename readStream.
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    93
    pusher := FilteringStream readingFrom:in writingTo:Transcript.
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    94
    pusher filterUpToEnd
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    95
                                                                [exEnd]
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    96
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
    97
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
    98
  filter random numbers in [0.5 .. 0.6]:
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    99
                                                                [exBegin]
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    |in filter|
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    in := Random new.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   104
    filter := FilteringStream readingFrom:in.
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    filter filter:[:num | ((num >= 0.5) and:[num <= 0.6]) ifTrue:[num] ifFalse:[nil]].
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    20 timesRepeat:[
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   108
        Transcript showCR:(filter next printString).
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    ]
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   110
                                                                [exEnd]
4078
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   111
 compute the values times two
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   112
                                                                [exBegin]
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   113
    |filter|
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   114
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   115
    filter := FilteringStream 
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   116
                readingFrom:#(1 2 3 4 5 6 7 8 9 10) readStream
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   117
                writingTo:#() writeStream.
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   118
    filter filter:[:num | num * 2].
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   119
    filter contents inspect.
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   120
                                                                [exEnd]
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   121
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   123
  filtering prime numbers (that's just a demo - not really useful, because we will end
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   124
  in a recursion error if many filters are stacked):
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   125
                                                                [exBegin]
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    |num generator primeFilter addFilter|
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    num := 1.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    generator := Plug new.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    generator respondTo:#next
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   131
                   with:[num := num + 1. num].
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    generator respondTo:#atEnd
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   133
                   with:[false].
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    addFilter := [:prime | |newFilter|
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   136
        newFilter := FilteringStream basicNew.
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   137
        newFilter filter:[:num | (num \\ prime) == 0 ifTrue:[
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   138
                                    nil
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   139
                                 ] ifFalse:[
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   140
                                    num
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   141
                                 ]
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   142
                         ].
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   143
        newFilter inputStream:primeFilter.
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   144
        primeFilter := newFilter
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ].
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    addFilter value:2.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    primeFilter inputStream:generator.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   150
    1000 timesRepeat:[
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   151
        |nextPrime|
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   153
        nextPrime := primeFilter next.
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   154
        addFilter value:nextPrime.
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   155
        Transcript showCR:nextPrime.
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    ]
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   157
                                                                [exEnd]
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
! !
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   161
!FilteringStream class methodsFor:'instance creation'!
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   162
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   163
new
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   164
    "create and return a new filteringStream.
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   165
     The resulting stream must be connected to some other stream,
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   166
     before being used"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   167
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   168
    ^ self basicNew initialize.
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   169
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   170
    "Created: 11.1.1997 / 15:31:30 / cg"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   171
    "Modified: 11.1.1997 / 15:33:13 / cg"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   172
!
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   173
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   174
on:something
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   175
    "create and return a new filteringStream, which reads from
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   176
     something (which must be convertable to a stream)"
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   177
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   178
    ^ self readingFrom:something readStream
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   179
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   180
    "Created: 11.1.1997 / 19:19:34 / cg"
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   181
!
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   182
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   183
readingFrom:aReadStream
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   184
    "create and return a new filteringStream, which reads from
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   185
     another stream"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   186
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   187
    ^ (self basicNew inputStream:aReadStream) initialize.
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   188
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   189
    "Created: 11.1.1997 / 15:32:15 / cg"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   190
!
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   191
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   192
readingFrom:aReadStream writingTo:aWriteStream
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   193
    "create and return a new filteringStream, which reads from
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   194
     aReadStream and writes to aWriteStream."
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   195
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   196
    |newStream|
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   197
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   198
    newStream := self basicNew.
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   199
    newStream inputStream:aReadStream.
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   200
    newStream outputStream:aWriteStream.
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   201
    newStream initialize.
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   202
    ^ newStream
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   203
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   204
    "Created: 11.1.1997 / 15:32:28 / cg"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   205
!
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   206
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   207
writingTo:aWriteStream
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   208
    "create and return a new filteringStream, which writes to
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   209
     another stream"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   210
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   211
    ^ (self basicNew outputStream:aWriteStream) initialize.
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   212
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   213
    "Created: 11.1.1997 / 15:32:36 / cg"
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   214
! !
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   215
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!FilteringStream methodsFor:'access - pull-reading'!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   218
contents
4078
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   219
    self filterUpToEnd.
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   220
    ^ outputStream contents
1291
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   221
!
6c7d5dcf979c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1239
diff changeset
   222
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
filterUpToEnd
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    "pull input from inputStream up to the end,
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   225
     push it filtered into the outputStream."
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    [inputStream atEnd] whileFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   228
	self nextPut:(inputStream next)
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    ].
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    "Created: 2.7.1996 / 21:06:42 / cg"
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   232
    "Modified: 11.1.1997 / 16:08:35 / cg"
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
next
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    "pull input from inputStream and
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
     push it filtered into the outputStream"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    |input output|
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   241
    "/ readAhead input has already been filtered
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   242
    "/ (see #atEnd)
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   243
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   244
    readAhead notNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   245
	input := readAhead.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   246
	readAhead := nil.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   247
	^ input
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   248
    ].
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   249
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    [inputStream atEnd] whileFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   251
	"/ get an element
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   252
	input := inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   253
	filter isNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   254
	    ^ input
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   255
	].
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   256
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   257
	"/ filter it - this may return nil, to eat it
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   258
	output := filter value:input.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   259
	output notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   260
	    "/ good - output it
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   261
	    ^ output.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   262
	].
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    ].
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
    ^ nil
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    "Created: 2.7.1996 / 21:09:58 / cg"
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   267
    "Modified: 11.1.1997 / 17:17:27 / cg"
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   268
!
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   269
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   270
peek
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   271
    "peek ahead for the next character"
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   272
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   273
    |input output|
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   274
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   275
    readAhead notNil ifTrue:[
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   276
	^ readAhead
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   277
    ].
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   278
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   279
    [inputStream atEnd] whileFalse:[
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   280
	"/ get an element
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   281
	input := inputStream peek.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   282
	filter isNil ifTrue:[
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   283
	    ^ input
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   284
	].
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   285
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   286
	"/ filter it - this may return nil, to eat it
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   287
	inputStream next.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   288
	output := filter value:input.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   289
	output notNil ifTrue:[
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   290
	    "/ good - output it
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   291
	    readAhead := output.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   292
	    ^ output.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   293
	].
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   294
    ].
1483
940e5d3acb4a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1291
diff changeset
   295
    ^ self pastEndRead
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   296
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   297
!
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   298
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   299
peekOrNil
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   300
    "peek ahead for the next character, or return nil"
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   301
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   302
    |input output|
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   303
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   304
    readAhead notNil ifTrue:[
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   305
	^ readAhead
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   306
    ].
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   307
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   308
    [inputStream atEnd] whileFalse:[
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   309
	"/ get an element
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   310
	input := inputStream peek.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   311
	filter isNil ifTrue:[
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   312
	    ^ input
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   313
	].
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   314
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   315
	"/ filter it - this may return nil, to eat it
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   316
	inputStream next.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   317
	output := filter value:input.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   318
	output notNil ifTrue:[
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   319
	    "/ good - output it
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   320
	    readAhead := output.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   321
	    ^ output.
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   322
	].
889
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   323
    ].
b3bfa0862f55 added #peek
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   324
    ^ nil
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
! !
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
!FilteringStream methodsFor:'access - push-writing'!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
nextPut:something
5179
5db8ac2ad6bd #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5160
diff changeset
   330
    "push something through the filter.
5db8ac2ad6bd #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5160
diff changeset
   331
     Answer the argument."
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    |output|
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
   335
    "/ filter it
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   336
    filter isNil ifTrue:[
5160
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   337
        outputStream nextPut:something
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   338
    ] ifFalse:[
5160
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   339
        output := filter value:something.
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   340
        output notNil ifTrue:[
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   341
            outputStream nextPut:output
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   342
        ]
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   343
    ].
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   344
    ^ something
ba06e617dd3f #OTHER by exept
Claus Gittinger <cg@exept.de>
parents: 4199
diff changeset
   345
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   347
    "Modified: 11.1.1997 / 16:12:52 / cg"
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
! !
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
!FilteringStream methodsFor:'accessing'!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
filter
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    "return the filter"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    ^ filter
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    "Modified: 2.7.1996 / 21:03:36 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    "Created: 2.7.1996 / 21:06:42 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
filter:something
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    "set the filter"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
    filter := something.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    "Modified: 2.7.1996 / 21:03:40 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    "Created: 2.7.1996 / 21:06:42 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
inputStream
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    "return the inputStream"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
3100
3d1aed95bc8e class: FilteringStream
Stefan Vogel <sv@exept.de>
parents: 3082
diff changeset
   373
    ^ inputStream inputStream
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    "Modified: 2.7.1996 / 21:03:43 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    "Created: 2.7.1996 / 21:06:42 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
inputStream:something
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
    "set the inputStream"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    inputStream := something.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    "Modified: 2.7.1996 / 21:03:46 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
    "Created: 2.7.1996 / 21:06:42 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
outputStream
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
    "return the outputStream"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
    ^ outputStream
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    "Modified: 2.7.1996 / 21:03:49 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    "Created: 2.7.1996 / 21:06:42 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
outputStream:something
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    "set the outputStream"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
    outputStream := something.
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    "Modified: 2.7.1996 / 21:03:52 / cg"
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    "Created: 2.7.1996 / 21:06:42 / cg"
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   404
! !
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   406
!FilteringStream methodsFor:'misc'!
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
4199
a3839426cbcf #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4078
diff changeset
   408
clearEOF
a3839426cbcf #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4078
diff changeset
   409
    ^ inputStream clearEOF
a3839426cbcf #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4078
diff changeset
   410
!
a3839426cbcf #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4078
diff changeset
   411
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   412
close
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   413
    "when I am closed, close my input - if any"
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   415
    inputStream notNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 479
diff changeset
   416
	inputStream close
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   417
    ]
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   419
    "Created: 11.1.1997 / 15:27:17 / cg"
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
! !
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
5246
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   422
!FilteringStream methodsFor:'obsolete positioning'!
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   423
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   424
position0Based
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   425
    <resource: #obsolete>
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   426
    "return the receiver streams position"
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   427
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   428
    ^ self position
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   429
!
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   430
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   431
position1Based
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   432
    <resource: #obsolete>
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   433
    "return the receiver streams position"
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   434
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   435
    ^ self position + 1
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   436
! !
bfd51179c98a #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5179
diff changeset
   437
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
!FilteringStream methodsFor:'queries'!
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
atEnd
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
   441
    "return true, if the receiver stream is at the end"
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
   442
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   443
    |nextElement|
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   444
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   445
    readAhead notNil ifTrue:[^ false].
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   446
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   447
    filter isNil ifTrue:[
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   448
        "/ then, its easy
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   449
        ^ inputStream atEnd
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   450
    ].
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   452
    "/ with a filter, things are more complicated,
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   453
    "/ since we cannot tell, without asking the filter...
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   454
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   455
    [inputStream atEnd] whileFalse:[
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   456
        nextElement := inputStream next.
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   457
        readAhead := filter value:nextElement.
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   458
        readAhead notNil ifTrue:[^ false].
477
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   459
    ].
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   460
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   461
    ^ true
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   462
6124ae485dbd need readAhead
Claus Gittinger <cg@exept.de>
parents: 474
diff changeset
   463
    "Modified: 11.1.1997 / 17:16:45 / cg"
474
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   464
!
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   465
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   466
contentsSpecies
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   467
    "return the kind of collection I should return when asked
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   468
     for multiple elements."
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   469
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   470
    ^ inputStream contentsSpecies
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   471
61cb199537b5 comments & fixes
Claus Gittinger <cg@exept.de>
parents: 472
diff changeset
   472
    "Created: 11.1.1997 / 16:23:22 / cg"
955
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   473
!
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   474
2786
39fbf0d38246 added: #isEmpty
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
   475
isEmpty
4078
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   476
    ^ inputStream isEmptyOrNil 
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   477
        and:[outputStream isEmptyOrNil and:[readAhead isNil]].
2786
39fbf0d38246 added: #isEmpty
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
   478
39fbf0d38246 added: #isEmpty
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
   479
    "Created: / 06-08-2012 / 08:09:01 / cg"
39fbf0d38246 added: #isEmpty
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
   480
!
39fbf0d38246 added: #isEmpty
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
   481
3101
53e5df54ecda class: FilteringStream
Stefan Vogel <sv@exept.de>
parents: 3100
diff changeset
   482
isEncodedStream
53e5df54ecda class: FilteringStream
Stefan Vogel <sv@exept.de>
parents: 3100
diff changeset
   483
    ^ inputStream isEncodedStream
53e5df54ecda class: FilteringStream
Stefan Vogel <sv@exept.de>
parents: 3100
diff changeset
   484
!
53e5df54ecda class: FilteringStream
Stefan Vogel <sv@exept.de>
parents: 3100
diff changeset
   485
3068
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   486
isReadable
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   487
    ^ inputStream notNil and:[inputStream isReadable]
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   488
!
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   489
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   490
isWritable
3779
b202ba593f41 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
   491
    "return true, if writing is supported by the receiver."
b202ba593f41 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3757
diff changeset
   492
3068
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   493
    ^ outputStream notNil and:[outputStream isWritable]
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   494
!
eeaea262e961 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 3067
diff changeset
   495
955
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   496
position
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   497
    "return the receiver streams position"
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   498
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   499
    |rawPosition|
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   500
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   501
    rawPosition := inputStream position.
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   502
    readAhead notNil ifTrue:[
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   503
	rawPosition := rawPosition - 1
955
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   504
    ].
97f0f14a61f4 added position-query
Claus Gittinger <cg@exept.de>
parents: 889
diff changeset
   505
    ^ rawPosition
1239
fcb74307748c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 955
diff changeset
   506
!
fcb74307748c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 955
diff changeset
   507
2695
c7a472e5a6f9 added: #readStream
Claus Gittinger <cg@exept.de>
parents: 2375
diff changeset
   508
readStream
c7a472e5a6f9 added: #readStream
Claus Gittinger <cg@exept.de>
parents: 2375
diff changeset
   509
    ^ self
c7a472e5a6f9 added: #readStream
Claus Gittinger <cg@exept.de>
parents: 2375
diff changeset
   510
c7a472e5a6f9 added: #readStream
Claus Gittinger <cg@exept.de>
parents: 2375
diff changeset
   511
    "Created: / 06-12-2011 / 01:05:26 / cg"
2775
d758d2280367 added: #size
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   512
!
d758d2280367 added: #size
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   513
d758d2280367 added: #size
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   514
size
4078
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   515
    "not always correct, but probably better than 0.
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   516
     Better use #isEmpty."
3067
89420b542b47 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 2788
diff changeset
   517
89420b542b47 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 2788
diff changeset
   518
    "/ is that better?
89420b542b47 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 2788
diff changeset
   519
    "/ self error:'size of input is unknown (due to filtering)'
4078
b7a4464057c6 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
   520
    ^ (inputStream ? outputStream) size.
2775
d758d2280367 added: #size
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   521
d758d2280367 added: #size
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   522
    "Created: / 05-08-2012 / 18:39:00 / cg"
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
! !
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
472
33f423823933 commentary & doc
Claus Gittinger <cg@exept.de>
parents: 401
diff changeset
   525
!FilteringStream class methodsFor:'documentation'!
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
version
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   528
    ^ '$Header$'
2375
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   529
!
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   530
61da1be30c35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
   531
version_CVS
3757
d0d90eb79608 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3101
diff changeset
   532
    ^ '$Header$'
401
f97488701314 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
! !
3067
89420b542b47 class: FilteringStream
Claus Gittinger <cg@exept.de>
parents: 2788
diff changeset
   534