core/Xtreams__Incomplete.st
author mkobetic
Tue, 31 Jan 2012 03:47:19 +0000
changeset 90 59f68d289949
parent 74 752e2d88fe73
child 109 9587e2df7029
permissions -rw-r--r--
(none)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/core' }"
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     2
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
"{ NameSpace: Xtreams }"
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
Error subclass:#Incomplete
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     6
	instanceVariableNames:'collection count start'
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     7
	classVariableNames:''
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     8
	poolDictionaries:''
20
51de794993c3 added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 2
diff changeset
     9
	category:'Xtreams-Core'
2
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    11
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
Incomplete comment:'This error is raised when a read or write fails to complete. The parameters report the details about successfully written or read elements.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    13
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    14
Instance Variables
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
	collection      <Collection | nil> when possible points at the collection with the successfully processed elements
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    16
	count   <Integer> number of successfully processed elements
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    17
	start   <Integer> if collection is set, this is the index where the successfully processed elements start
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    18
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    19
'
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    20
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    21
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    23
!Incomplete class methodsFor:'instance creation'!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
count: anInteger
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
	^self new on: nil count: anInteger at: nil
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    27
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    28
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    29
on: collection count: count at: start
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    30
	^self new on: collection count: count at: start
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    31
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    32
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    33
zero
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    34
	^self count: 0
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    35
! !
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    36
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    37
!Incomplete methodsFor:'accessing'!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    38
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    39
collection
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    40
	^collection
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    41
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    42
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
collection: anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    44
	collection := anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    45
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    46
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    47
contents
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    48
	^collection
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    49
		ifNil: [ self originator contentsSpecies withSize: count ]
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    50
		ifNotNil: [ collection copyFrom: start to: start + count - 1 ]
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    51
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    52
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    53
count
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    54
	^count
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    55
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    56
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    57
count: anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    58
	count := anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    59
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    60
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    61
start
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    62
	^start
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    63
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    64
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    65
start: anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    66
	start := anObject
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    67
! !
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    68
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    69
!Incomplete methodsFor:'initialize-release'!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    70
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    71
on: aCollection count: aCount at: aStart
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    72
	collection := aCollection.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    73
	count := aCount.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    74
	start := aStart
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    75
! !
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    76
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    77
!Incomplete methodsFor:'private'!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    78
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    79
streamingInsert: anInteger into: aWriteStream
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    80
	| amount |
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    81
	collection ifNil: [(self class on: collection count: 0 at: start) raise].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    82
	amount := anInteger min: count.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    83
	aWriteStream insert: amount from: collection at: start.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    84
	amount < anInteger ifTrue: [(self class on: collection count: amount at: start) raise].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    85
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    86
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    87
streamingInsertInto: aWriteStream
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    88
	collection ifNil: [^0].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    89
	aWriteStream insert: count from: collection at: start.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    90
	^count
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    91
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    92
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    93
streamingWrite: anInteger into: aWriteStream
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    94
	| amount |
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    95
	collection ifNil: [(self class on: collection count: 0 at: start) raise].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    96
	amount := anInteger min: count.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    97
	aWriteStream write: amount from: collection at: start.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    98
	amount < anInteger ifTrue: [(self class on: collection count: amount at: start) raise].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    99
	^anInteger
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   100
!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   101
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   102
streamingWriteInto: aWriteStream
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   103
	collection ifNil: [^0].
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   104
	aWriteStream write: count from: collection at: start.
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   105
	^count
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   106
! !
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   107
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   108
!Incomplete class methodsFor:'documentation'!
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   109
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   110
version_SVN
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   111
    ^ '$Id$'
faf220cbe5b9 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   112
! !