NPExtStr.st
author claus
Fri, 16 Jul 1993 11:39:45 +0200
changeset 1 a27a279701f8
child 3 24d81bf47225
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1989-92 by Claus Gittinger
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
	      All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
ExternalStream subclass:#NonPositionableExternalStream
a27a279701f8 Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'typeIfStandard'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    17
       category:'Streams-External'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    18
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
NonPositionableExternalStream comment:'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    21
a27a279701f8 Initial revision
claus
parents:
diff changeset
    22
COPYRIGHT (c) 1989-92 by Claus Gittinger
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
	      All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
a27a279701f8 Initial revision
claus
parents:
diff changeset
    25
this one stands all non-positionable external streams; there are
a27a279701f8 Initial revision
claus
parents:
diff changeset
    26
terminal streams, pipe streams etc.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    27
a27a279701f8 Initial revision
claus
parents:
diff changeset
    28
%W% %E%
a27a279701f8 Initial revision
claus
parents:
diff changeset
    29
'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    30
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
    32
#include <stdio.h>
a27a279701f8 Initial revision
claus
parents:
diff changeset
    33
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
    34
a27a279701f8 Initial revision
claus
parents:
diff changeset
    35
!NonPositionableExternalStream class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    36
a27a279701f8 Initial revision
claus
parents:
diff changeset
    37
forStdin
a27a279701f8 Initial revision
claus
parents:
diff changeset
    38
    ^ self basicNew initializeForStdin
a27a279701f8 Initial revision
claus
parents:
diff changeset
    39
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    40
a27a279701f8 Initial revision
claus
parents:
diff changeset
    41
forStdout
a27a279701f8 Initial revision
claus
parents:
diff changeset
    42
    ^ self basicNew initializeForStdout
a27a279701f8 Initial revision
claus
parents:
diff changeset
    43
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    44
a27a279701f8 Initial revision
claus
parents:
diff changeset
    45
forStderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
    46
    ^ self basicNew initializeForStderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
    47
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    48
a27a279701f8 Initial revision
claus
parents:
diff changeset
    49
!NonPositionableExternalStream methodsFor:'private'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    50
a27a279701f8 Initial revision
claus
parents:
diff changeset
    51
initializeForStdin
a27a279701f8 Initial revision
claus
parents:
diff changeset
    52
    mode := #readonly.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    53
    typeIfStandard := #Stdin.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    54
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
    55
    _INST(filePointer) = MKOBJ(stdin);
a27a279701f8 Initial revision
claus
parents:
diff changeset
    56
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
    57
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    58
a27a279701f8 Initial revision
claus
parents:
diff changeset
    59
initializeForStdout
a27a279701f8 Initial revision
claus
parents:
diff changeset
    60
    mode := #readwrite.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    61
    unBuffered := true.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    62
    typeIfStandard := #Stdout.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    63
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
    64
    _INST(filePointer) = MKOBJ(stdout);
a27a279701f8 Initial revision
claus
parents:
diff changeset
    65
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
    66
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    67
a27a279701f8 Initial revision
claus
parents:
diff changeset
    68
initializeForStderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
    69
    mode := #readwrite.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    70
    unBuffered := true.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    71
    typeIfStandard := #Stderr.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    72
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
    73
    _INST(filePointer) = MKOBJ(stderr);
a27a279701f8 Initial revision
claus
parents:
diff changeset
    74
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
    75
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    76
a27a279701f8 Initial revision
claus
parents:
diff changeset
    77
reOpen
a27a279701f8 Initial revision
claus
parents:
diff changeset
    78
    "if I am one of the standard streams, reopen is easy"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    79
a27a279701f8 Initial revision
claus
parents:
diff changeset
    80
'reopen NPExtStr' printNewline.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    81
    (typeIfStandard == #Stdin) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
    82
	^ self initializeForStdin
a27a279701f8 Initial revision
claus
parents:
diff changeset
    83
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
    84
    (typeIfStandard == #Stdout) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
    85
	^ self initializeForStdout
a27a279701f8 Initial revision
claus
parents:
diff changeset
    86
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
    87
    (typeIfStandard == #Stderr) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
    88
	^ self initializeForStderr
a27a279701f8 Initial revision
claus
parents:
diff changeset
    89
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
    90
    ^ super reOpen
a27a279701f8 Initial revision
claus
parents:
diff changeset
    91
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    92
a27a279701f8 Initial revision
claus
parents:
diff changeset
    93
!NonPositionableExternalStream methodsFor:'error handling'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    94
a27a279701f8 Initial revision
claus
parents:
diff changeset
    95
errorNotPositionable
a27a279701f8 Initial revision
claus
parents:
diff changeset
    96
    ^ self error:'positioning not allowd'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    97
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    98
a27a279701f8 Initial revision
claus
parents:
diff changeset
    99
!NonPositionableExternalStream methodsFor:'positioning'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   100
a27a279701f8 Initial revision
claus
parents:
diff changeset
   101
position
a27a279701f8 Initial revision
claus
parents:
diff changeset
   102
    ^ 0
a27a279701f8 Initial revision
claus
parents:
diff changeset
   103
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   104
a27a279701f8 Initial revision
claus
parents:
diff changeset
   105
position:anInteger
a27a279701f8 Initial revision
claus
parents:
diff changeset
   106
    self errorNotPositionable
a27a279701f8 Initial revision
claus
parents:
diff changeset
   107
! !