Stream interfaces

Thomas Gagne tgagne at ix.netcom.com
Tue Feb 27 10:12:57 EST 2001


I don't think it's any of the programmer's business what the attributes are,
unless of course, you asking for Stream's heirarchy:
    Steam
        PeekableStream
            PositionableStream
                ExternalStream
                    BufferedExternalStream
                        ExternalReadStream
                            ExternalReadWriteStream
                        ExternalWriteStream
                InternalStream
                    WriteStream
                        ReadWriteStream

There may be other subclasses floating around I'm not aware of.  It should be
noted all of these classes, except the External* variety can be created on any
collection (other Smalltalker's can chirp in here if I'm going astray).

To list all the interfaces is a bit of a chore.  It may be easier to check to
see if there's something missing you believe should be provided.

Just checking Stream's method dictionary I find:

Stream MethodDictionary (#nextPut: #contents #atEnd #next: #do: #nextPutAll:
#nextMatchFor: #next:put: #next #space #nextChunkPut: #timeStamp #close #cr
#print: #store: #contentsSpecies #upToAll1: #next:into:startingAt: #emphasis
#emphasis: #crtab: #tab #crtab #isReadable #through: #policy #upTo:
#next:putAll:startingAt: #commit #throughAll: #upToEnd #flush
#nextAvailable:into:startingAt: #needsFileLineEndConversion
#computePrefixFunctionFor: #isWritable #isExternalStream #skipThrough:
#throughAll1: #nextAvailable: #skipToAll1: #tab: #ioConnection
#upToAll1:returnMatch:includePattern: )

There are others implemented in Stream's subclasses, but I expect this is the
majority of them.  I've been able to find everything I've been looking for
somewhere in Stream's methods, or at least one of its descendents.

--
.tom






More information about the Python-list mailing list