PositionableStream.st
changeset 6314 e1aad938d629
parent 6230 877a8da90c7c
child 6361 93376085b2df
equal deleted inserted replaced
6313:30374121d853 6314:e1aad938d629
    70     ErrorDuringFileInSignal isNil ifTrue:[
    70     ErrorDuringFileInSignal isNil ifTrue:[
    71         ErrorDuringFileInSignal := ErrorSignal newSignalMayProceed:true.
    71         ErrorDuringFileInSignal := ErrorSignal newSignalMayProceed:true.
    72         ErrorDuringFileInSignal nameClass:self message:#errorDuringFileInSignal.
    72         ErrorDuringFileInSignal nameClass:self message:#errorDuringFileInSignal.
    73         ErrorDuringFileInSignal notifierString:'error during fileIn'.
    73         ErrorDuringFileInSignal notifierString:'error during fileIn'.
    74 
    74 
    75         InvalidPositionErrorSignal := PositionErrorSignal newSignalMayProceed:true.
    75 "/        InvalidPositionErrorSignal := PositionErrorSignal newSignalMayProceed:true.
    76         InvalidPositionErrorSignal nameClass:self message:#invalidPositionErrorSignal.
    76 "/        InvalidPositionErrorSignal nameClass:self message:#invalidPositionErrorSignal.
    77         InvalidPositionErrorSignal notifierString:'invalid position'.
    77         InvalidPositionErrorSignal := PositionOutOfBoundsError.
       
    78         InvalidPositionErrorSignal notifierString:'position out of bounds: '.
    78 
    79 
    79         CurrentFileInDirectoryQuerySignal := QuerySignal new.
    80         CurrentFileInDirectoryQuerySignal := QuerySignal new.
    80         CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal.
    81         CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal.
    81         CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'.
    82         CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'.
    82         CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory].
    83         CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory].
    83 
    84 
    84         ZeroPosition := 1.
    85         ZeroPosition := 1.
    85     ]
    86     ]
    86 
       
    87 ! !
    87 ! !
    88 
    88 
    89 !PositionableStream class methodsFor:'instance creation'!
    89 !PositionableStream class methodsFor:'instance creation'!
    90 
    90 
    91 on:aCollection
    91 on:aCollection
   797     "set the read (or write) position"
   797     "set the read (or write) position"
   798 
   798 
   799     "/ FIX: allow positioning right after last element of stream
   799     "/ FIX: allow positioning right after last element of stream
   800     "/ ((index > readLimit) or:[index < 0]) ifTrue: [^ self positionError].
   800     "/ ((index > readLimit) or:[index < 0]) ifTrue: [^ self positionError].
   801 
   801 
   802     ((index > (readLimit+1)) or:[index < ZeroPosition]) ifTrue: [^ self positionError].
   802     ((index > (readLimit+1)) or:[index < ZeroPosition]) ifTrue: [^ self positionError:index].
   803     position := index
   803     position := index
   804 
   804 
   805     "
   805     "
   806      |s|
   806      |s|
   807 
   807 
   993     ^ InvalidPositionErrorSignal raiseRequestWith:nil
   993     ^ InvalidPositionErrorSignal raiseRequestWith:nil
   994 
   994 
   995     "Modified: / 26.7.1999 / 10:59:13 / stefan"
   995     "Modified: / 26.7.1999 / 10:59:13 / stefan"
   996 !
   996 !
   997 
   997 
       
   998 positionError:badPostition
       
   999     "{ Pragma: +optSpace }"
       
  1000 
       
  1001     "report an error when positioning past the end
       
  1002      or before the beginning."
       
  1003 
       
  1004     ^ InvalidPositionErrorSignal raiseRequestWith:badPostition
       
  1005 !
       
  1006 
   998 with:aCollection
  1007 with:aCollection
   999     "setup for streaming to the end of aCollection"
  1008     "setup for streaming to the end of aCollection"
  1000 
  1009 
  1001     collection := aCollection.
  1010     collection := aCollection.
  1002     readLimit := aCollection size + 1.
  1011     readLimit := aCollection size + 1.
  1078 ! !
  1087 ! !
  1079 
  1088 
  1080 !PositionableStream class methodsFor:'documentation'!
  1089 !PositionableStream class methodsFor:'documentation'!
  1081 
  1090 
  1082 version
  1091 version
  1083     ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.105 2001-11-21 15:04:10 cg Exp $'
  1092     ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.106 2001-12-13 19:00:33 cg Exp $'
  1084 ! !
  1093 ! !
  1085 PositionableStream initialize!
  1094 PositionableStream initialize!