terminals/Xtreams__CollectionWriteStream.st
author Martin Kobetic
Sun, 17 Nov 2013 00:21:39 -0500
changeset 141 263190106319
parent 109 9587e2df7029
permissions -rw-r--r--
merging
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/terminals' }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     2
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
"{ NameSpace: Xtreams }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
WriteStream subclass:#CollectionWriteStream
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     6
	instanceVariableNames:''
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     7
	classVariableNames:''
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     8
	poolDictionaries:''
25
02e7c3b6f63c added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 9
diff changeset
     9
	category:'Xtreams-Terminals'
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    11
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
CollectionWriteStream comment:'Write stream on a sequenceable collection. The collection is grown automatically to accommodate any elements written. Closing a collection write stream will truncate the collection to the current stream position. This behavior is useful as a replacement for the traditional #contents message. The contents can be accessed with the #terminal message after the stream is closed.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    13
{{{
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    14
	String new writing write: ''Hello World''; -- 6; close; terminal
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
}}}
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    16
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    17
Instance Variables
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    18
	position        <Integer> current position of the stream
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    19
	length  <Integer> number of valid elements in the destination
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    20
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    21
'
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    23
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
!CollectionWriteStream methodsFor:'accessing'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    27
put: anObject
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    28
	destination add: anObject
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    29
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    30
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    31
write: anInteger from: aSequenceableCollection at: startIndex
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    32
	startIndex to: startIndex + anInteger - 1 do: [:index |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    33
		destination add: (aSequenceableCollection at: index)].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    34
	^anInteger
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    35
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    36
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    37
!CollectionWriteStream methodsFor:'initialize-release'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    38
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    39
close
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    40
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    41
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    42
contentsSpecies
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
	^destination species
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    44
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    45
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    46
flush
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    47
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    48
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    49
!CollectionWriteStream class methodsFor:'documentation'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    50
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    51
version_HG
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    52
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    53
    ^ '$Changeset: <not expanded> $'
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    54
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    55