PosStream.st
changeset 2966 856dfc8a294a
parent 2893 8ba406da6b22
child 3032 d267a0b1b48d
equal deleted inserted replaced
2965:c5d6d02b0e8c 2966:856dfc8a294a
    12 
    12 
    13 'From Smalltalk/X, Version:3.1.9 on 31-aug-1997 at 8:08:34 pm'                  !
    13 'From Smalltalk/X, Version:3.1.9 on 31-aug-1997 at 8:08:34 pm'                  !
    14 
    14 
    15 PeekableStream subclass:#PositionableStream
    15 PeekableStream subclass:#PositionableStream
    16 	instanceVariableNames:'collection position readLimit writeLimit'
    16 	instanceVariableNames:'collection position readLimit writeLimit'
    17 	classVariableNames:'ErrorDuringFileInSignal ChunkSeparator'
    17 	classVariableNames:'InvalidPositionErrorSignal ErrorDuringFileInSignal ChunkSeparator'
    18 	poolDictionaries:''
    18 	poolDictionaries:''
    19 	category:'Streams'
    19 	category:'Streams'
    20 !
    20 !
    21 
    21 
    22 !PositionableStream class methodsFor:'documentation'!
    22 !PositionableStream class methodsFor:'documentation'!
    55     ErrorDuringFileInSignal isNil ifTrue:[
    55     ErrorDuringFileInSignal isNil ifTrue:[
    56 	ErrorDuringFileInSignal := ErrorSignal newSignalMayProceed:true.
    56 	ErrorDuringFileInSignal := ErrorSignal newSignalMayProceed:true.
    57 	ErrorDuringFileInSignal nameClass:self message:#errorDuringFileInSignal.
    57 	ErrorDuringFileInSignal nameClass:self message:#errorDuringFileInSignal.
    58 	ErrorDuringFileInSignal notifierString:'error during fileIn'.
    58 	ErrorDuringFileInSignal notifierString:'error during fileIn'.
    59 
    59 
       
    60 	InvalidPositionErrorSignal := PositionErrorSignal newSignalMayProceed:true.
       
    61 	InvalidPositionErrorSignal nameClass:self message:#invalidPositionErrorSignal.
       
    62 	InvalidPositionErrorSignal notifierString:'invalid position'.
       
    63 
    60 	ChunkSeparator := $!!
    64 	ChunkSeparator := $!!
    61     ]
    65     ]
       
    66 ! !
       
    67 
       
    68 !PositionableStream class methodsFor:'Signal constants'!
       
    69 
       
    70 invalidPositionErrorSignal
       
    71     "return the signal raised if positioning is attempted to an
       
    72      invalid position (i.e. before the begin of the stream or after
       
    73      the end)"
       
    74 
       
    75     ^ InvalidPositionErrorSignal
    62 ! !
    76 ! !
    63 
    77 
    64 !PositionableStream class methodsFor:'instance creation'!
    78 !PositionableStream class methodsFor:'instance creation'!
    65 
    79 
    66 on:aCollection
    80 on:aCollection
   670 !
   684 !
   671 
   685 
   672 positionError
   686 positionError
   673     "{ Pragma: +optSpace }"
   687     "{ Pragma: +optSpace }"
   674 
   688 
   675     "report an error when positioning past the end"
   689     "report an error when positioning past the end
   676 
   690      or before the beginning."
   677     ^ self error:'cannot position past end of collection'
   691 
       
   692     ^ InvalidPositionErrorSignal raiseIn:thisContext sender
   678 !
   693 !
   679 
   694 
   680 with:aCollection
   695 with:aCollection
   681     "setup for streaming to the end of aCollection"
   696     "setup for streaming to the end of aCollection"
   682 
   697 
   707 ! !
   722 ! !
   708 
   723 
   709 !PositionableStream class methodsFor:'documentation'!
   724 !PositionableStream class methodsFor:'documentation'!
   710 
   725 
   711 version
   726 version
   712     ^ '$Header: /cvs/stx/stx/libbasic/Attic/PosStream.st,v 1.57 1997-09-02 17:40:11 cg Exp $'
   727     ^ '$Header: /cvs/stx/stx/libbasic/Attic/PosStream.st,v 1.58 1997-09-22 19:05:41 cg Exp $'
   713 ! !
   728 ! !
   714 PositionableStream initialize!
   729 PositionableStream initialize!