ConsStream.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 5249 08af43aaea4c
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:
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2003 by eXept Software AG
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic2' }"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
5249
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
    14
"{ NameSpace: Smalltalk }"
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
    15
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Stream subclass:#ConsStream
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'list'
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Collections-Linked'
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!ConsStream class methodsFor:'documentation'!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 2003 by eXept Software AG
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
              All Rights Reserved
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    A stream on a list (of conses)
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    Conses are not heavily used by Smalltalk (actually: not at all).
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    Consider this a demo class.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    [author:]
2661
1b2a466b611f changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
    46
        Claus Gittinger (Dec 2003)
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    [see also:]
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
examples
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
                                                                            [exBegin]
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    |list s|
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    list := Cons fromArray:#(1 2 3 4).   
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    s := list readStream.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    [s atEnd] whileFalse:[
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
        Transcript showCR:(s next).
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    ].
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
                                                                            [exEnd]
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
                                                                            [exBegin]
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    |gen allNumbers s|
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    gen := [:n | LazyCons car:n cdr:[ gen value:n+1 ]].
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    allNumbers := gen value:1.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    s := allNumbers readStream.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    100 timesRepeat:[
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
        Transcript showCR:(s next).
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    ].
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
                                                                            [exEnd]
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
"
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
! !
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!ConsStream class methodsFor:'instance creation'!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
on:aCons
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    ^ self basicNew list:aCons
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
! !
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!ConsStream methodsFor:'accessing'!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
list:something
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    list := something.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
! !
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!ConsStream methodsFor:'reading'!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
atEnd
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    ^ list isNil 
5249
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
    94
! !
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
    95
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
    96
!ConsStream methodsFor:'stream protocol-reading'!
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
next
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    |rslt|
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    list isNil ifTrue:[
1482
cea67ec35cc2 pastEnd -> pastEndRead
Claus Gittinger <cg@exept.de>
parents: 1378
diff changeset
   102
        ^ self pastEndRead
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    ].
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    rslt := list car.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    list := list cdr.
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ^ rslt
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
! !
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
!ConsStream class methodsFor:'documentation'!
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
version
5249
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
   112
    ^ '$Header$'
2661
1b2a466b611f changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
   113
!
1b2a466b611f changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
   114
1b2a466b611f changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
   115
version_CVS
5249
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
   116
    ^ '$Header$'
1378
c588900169e4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
! !
5249
08af43aaea4c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
   118