summaryrefslogtreecommitdiff
path: root/static/v10/man3/sbuf.prot.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
commit97d5c458cfa039d857301e1ca7d5af3beb37131d (patch)
treeb460cd850d0537eb71806ba30358840377b27688 /static/v10/man3/sbuf.prot.3
parentb89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff)
build: Better Build System
Diffstat (limited to 'static/v10/man3/sbuf.prot.3')
-rw-r--r--static/v10/man3/sbuf.prot.3410
1 files changed, 0 insertions, 410 deletions
diff --git a/static/v10/man3/sbuf.prot.3 b/static/v10/man3/sbuf.prot.3
deleted file mode 100644
index 7125f362..00000000
--- a/static/v10/man3/sbuf.prot.3
+++ /dev/null
@@ -1,410 +0,0 @@
-. \"ident "%W%"
-. \"Copyright (c) 1984 AT&T
-. \"All Rights Reserved
-. \"THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
-. \"The copyright notice above does not evidence any
-. \"actual or intended publication of such source code.
-.TH SBUF.PROT 3I+ "C++ Stream Library" " "
-.SH NAME
-streambuf \- interface for derived classes
-.SH SYNOPSIS
-.nf
-.ta1i 2i
-.ft B
-#include <iostream.h>
-
-typedef long streamoff, streampos;
-class ios {
-public:
- enum seek_dir { beg, cur, end };
- enum open_mode { in, out, ate, app } ;
- // \fIand lots of other stuff ... \fP
- } ;
-
-class streambuf {
-public:
- streambuf() ;
- streambuf(char* p, int len, int i=0);
-
- void dbp() ;
-protected:
- int allocate();
- char* base();
- int blen();
- char* eback();
- char* ebuf();
- char* egptr();
- char* epptr();
- void gbump(int n);
- char* gptr();
- char* pbase();
- void pbump(int n);
- char* pptr();
- void setg(char* eb,char* g, char* eg);
- void setp(char* p, char* ep);
- void setb(char* b, char* eb, int a = 0 );
- int unbuffered();
- void unbuffered(int);
-
- virtual int doallocate();
- virtual int pbackfail(int c);
- virtual ~streambuf() ;
-public:
- virtual int overflow(int c=EOF);
- virtual int underflow();
- virtual streambuf*
- setbuf(char* p, int len);
- virtual streampos
- seekpos(streampos,open_mode=input|output);
- virtual streampos
- seekoff(streamoff,seek_dir,open_mode=input|output);
- virtual int sync();
-};
-.fi
-.ft R
-.SH DESCRIPTION
-\f(CWstreambuf\fRs implement the buffer abstraction described in
-\fIsbuf.pub\fR(3C++). But the \f(CWstreambuf\fR class itself contains
-only basic members for manipulating the characters and normally
-a class derived from \f(CWstreambuf\fR will be used. This man page
-describes the interface needed by programmers who are
-coding a derived class.
-Broadly speaking there are two kinds of members described here.
-The non-virtual functions are provided for manipulating a \fBstreambuf\fR
-in ways that are appropriate in a derived class.
-Their descriptions reveal details of the implementation that would
-be inappropriate in the public interface.
-The virtual functions permit the derived class to specialize the
-\fBstreambuf\fR class in ways appropriate to the specific sources
-and sinks that it is implementing.
-The descriptions of virtuals explain the obligations of the
-virtuals of the derived class. If the virtuals behave as specified,
-the \fBstreambuf\fR will behave as specified in the
-public interface. However, if the virtuals do not behave as
-specified, then the \f(CWstreambuf\fR may not behave properly,
-and an \f(CWiostream\fR (or any other code) that relies on proper
-behavior of the \f(CWstreambuf\fR may not behave properly either.
-.PP
-Assume
-.br
-\(em \fBsb\fR is a \f(CWstreambuf*\fR.
-.br
-\(em \fBi\fR and \fBn\fR are \f(CWint\fR.
-.br
-\(em \fBptr\fR, \fBb\fR, \fBeb\fR, \fBp\fR, \fBep\fR, \fBeb\fR, \fBg\fR,
-and \fBeg\fR are \f(CWchar*\fR.
-.br
-\(em \fBc\fR is an \f(CWint\fR character (positive or \f(CWEOF\fR)).
-.br
-\(em \fBpos\fR is a \f(CWstreampos\fR. (See \fIiostream\fR(3C++).)
-.br
-\(em \fBoff\fR is a \f(CWstreamoff\fR.
-.br
-\(em \fBdir\fR is a \f(CWseekdir\fR.
-.br
-\(em \fBmode\fR is a \f(CWopen_mode\fR.
-.PP
-Constructors:
-.TP
-\fBstreambuf()\fR
-Constructs
-an empty buffer corresponding to an empty sequence.
-.TP
-\fBstreambuf(b,len,i)\fR
-Constructs an empty buffer and then sets up the reserve area
-to be the \fBlen\fR bytes starting at \fBb\fR. (\fBi\fR is present
-for backward compatibility with the stream package\fR. The effect
-if it is not 0 is undefined.)
-.PP
-The protected members of
-\f(CWstreambuf\fR
-present an interface to derived classes organized around
-three areas (arrays of bytes) managed cooperatively by
-the base and derived classes.
-They are the get area, the put area, and the reserve area.
-The get and the put area are normally disjoint, but they
-may both overlap the reserve area, whose primary purpose is
-to be a a resource in which
-space for the put and get areas can be allocated. The get and
-the put areas are changed as characters are put into and
-gotten from the buffer, but the reserve area normally remains
-fixed.
-The areas are defined by a collection of \f(CWchar*\fR values.
-The buffer abstraction is described in terms of pointers that point
-between characters, but the \f(CWchar*\fR values must point at
-\f(CWchar\fRs.
-To establish a correspondence the \f(CWchar*\fR values should be thought
-of as pointing just before the byte they really point at.
-.PP
-Functions to examine the pointers are:
-.TP
-\fBptr=sb->base()\fR
-Returns a pointer to the first byte of the reserve area.
- Space between \fBsb->base()\fR
-and \fBsb->ebase()\fR is the reserve area.
-.TP
-\fBptr=sb->eback()\fR
-Returns a pointer to a lower bound on
-\fBsb->gptr()\fR.
-Space between \fBsb->eback()\fR and \fBsb->gptr()\fR is available
-for putback.
-.TP
-\fBptr=sb->ebuf()\fR
-Returns a pointer to the byte after the last byte of the reserve area.
-.TP
-\fBptr=sb->egptr()\fR
-Returns a pointer to the byte after the last byte of the get area.
-.TP
-\fBptr=sb->epptr()\fR
-Returns a pointer to the byte after the last byte of the put area.
-.TP
-\fBptr=sb->gptr()\fR
-Returns a pointer to the first byte of the get area.
-The available characters are those between \fBsb->gptr()\fR
-and \fBsb->egptr()\fR. The next character fetched will
-be \fB*sb->gptr()\fR unless \fBsb->egptr()\fR is less than
-or equal to \fBsb->gptr()\fR.
-.TP
-\fBptr=sb->pbase()\fR
-Returns a pointer to the put area base.
-Characters between \fBsb->pbase()\fR and \fBsb->pptr()\fR
-have been storeded into the buffer and not yet consumed.
-.TP
-\fBptr=sb->pptr()\fR
-Returns a pointer to the first byte of the put area.
-The space between \fBsb->pptr()\fR
-and \fBsb->epptr()\fR is the put area and characters will be storeed
-here.
-.PP
-The member functions for setting the pointers:
-.TP
-\fBsb->setb(b,eb,i)\fR
-Sets \fBbase\fR and \fBebase\fR to \fBb\fR and \fBeb\fR respectively.
-\fBi\fR controls whether the area will be subject to
-automatic deletion.
-If \fBi\fR is non zero, then
-\f(CWdelete\fB b\fR will be done when \fBbase\fR is changed by
-another call of \fBsetb\fR, or when the destructor is called for
-\fB*sb\fR.
-If \fBb\fR and \fBeb\fR
-are both null then we say that there is no reserve area.
-If \fBb\fR is non-null, there is a reserve area even if
-\fBeb\fR is less than \fBb\fR and so the reserve area
-has zero length.
-.TP
-\fBsb->setp(p,ep)\fR
-Sets \fBpptr\fR to \fBp\fR, \fBpbase\fR to \fBp\fR, and \fBepptr\R
-to \fBep\fR.
-.TP
-\fBsb->setg(eb,g,eg)\fR
-Sets \fBeback\fR to \fBeb\fR, \fBgptr\fR to \fBg\fR, and \fBegptr\fR
-to \fBeg\fR.
-.PP
-Other non-virtual members:
-.TP
-\fBi=sb->allocate()\fR
-Tries to set up a reserve area.
-If a reserve area already exists or if \fBsb->unbuffered()\fR
-is nonzero returns 0 without doing anything.
-If the attempt to allocate space fails \fBallocate\fR
-returns \f(CWEOF\fR. Otherwise (allocation succeeds)
-\fBallocate\fR returns 1. \fBallocate\fR is not called by
-any member of \f(CWstreambuf\fR except virtuals.
-.TP
-\fBi=sb->blen()\fR
-Returns the current size (in chars) of the current reserve area.
-.TP
-\fBdbp()\fR
-Writes directly on file descriptor 1
-information in ASCII about the state of the
-buffer. It is intended for debugging and nothing
-is specified about the form of the output. It is considered part
-of the protected interface because the information it prints can
-only be understood in relation to that interface, but it is a public
-function so that it can be called anywhere during debugging.
-.TP
-\fBsb->gbump(n)\fR
-Increments \fBgptr\fR by \fBn\fR
-which may be positive or negative.
-No checks are made on whether the new
-value of \fBgptr\fR is in bounds.
-.TP
-\fBsb->pbump(n)\fR
-Increments \fBpptr\fR by \fBn\fR
-which may be positive or negative.
-No checks are made on whether the new
-value of \fBpptr\fR is in bounds.
-.sp
-.nf
-.in -.5i
-\fBsb->unbuffered(i)\fR
-\fBi=sb->unbuffered()\fR
-.in
-.fi
-There is a private variable known as \fBsb\fR's buffering state.
-\fBsb->unbuffered(i)\fR sets the value of this variable
-to \fBi\fR and \fBsb->unbuffered()\fR returns the current value.
-This state is independent of the actual
-allocation of a reserve area. Its primary purpose is to
-control whether a reserve area is allocated automatically
-by \fBallocate\fR.
-.PP
-Virtual functions must be redefined in
-derived classes to specialize the behavior of \fBstreambuf\fRs:
-.TP
-\fBi=sb->doallocate()\fR
-Is called when \fBallocate\fR determines
-that space is needed.
-\fBdoallocate\fR is required to call \fBsetb\fR to provide a reserve
-area or to return \f(CWEOF\fR if it cannot. It is only called
-if \fBsb->unbuffered()\fR is non-zero and \fBsb->base()\fR is non-zero.
-.TP
-\fBi=overflow(c)\fR
-Is called to consume characters. If \fBc\fR is not \f(CWEOF\fR
-it also must either save \fBc\fR or consume it.
-Usually it is called when the put area is full and
-an attempt is being made to store a new character, but
-it can be called at other times.
-The normal action is to consume the characters between \fBpbase\fR
-and \fBpptr\fR, call \fBsetp\fR to establish a new put area, and
-if \fBc\f(CW!=EOF\fR store it (using \fBsputc\fR).
-If \fBsb->unbuffered()\fR is non-zero,
-\fBoverflow\fR is not allowed to call \fBsetp\fR and
-so must consume \fBn\fR
-\fBsb->overflow\fR
-should return \fBEOF\fR to indicate an error; otherwise it should
-return something else.
-.TP
-\fBi=sb->pbackfail(c)
-Is called when \fBeback\fR equals \fBgptr\fR and an attempt
-has been made to putback \fBc\fR.
-If this situation can be dealt with (e.g., by repositioning
-an external file), \fBpbackfail\fR should return \fBc\fR;
-otherwise it should return \f(CWEOF\fR.
-.TP
-\fBpos=sb->seekoff(off,dir,mode)\fR
-Repositions the get and/or put pointers (i.e., the abstract
-get and put pointers, not \fBpptr\fR and \fBgptr\fR). The
-meanings of \fBoff\fR and \fBdir\fR
-are discussed in
-\fIsbuf.pub\fR(3C++).
-\fBmode\fR specifies whether the put pointer (\fBoutput\fR bit set) or
-the get pointer (\fBinput\fR bit set) is to be modified. Both bits
-may be set in which case both pointers should be affected.
-A class derived from \fBstreambuf\fR is not required to
-support repositioning. \fBseekoff\fR should return \f(CWEOF\fR if
-the class does not support repositioning. If the class does
-support repositioning, \fBseekoff\fR should return the new
-position or \f(CWEOF\fR on error.
-.TP
-\fBpos=sb->seekpos(pos,mode)\fR
-Repositions the streambuf get and/or put pointer to \fBpos\fR.
-\fBmode\fR specifies which pointers are affected as for \fBseekoff\fR.
-Returns \fBpos\fR (the argument) or \f(CWEOF\fR if the class does
-not support repositioning or an error occurs.
-.TP
-\fBsb=sb->setbuf(ptr,len)\fR
-Offers the array at \fBptr\fR with \fBlen\fR bytes should
-be used as a reserve
-area. The normal interpretation is that
-if \fBptr\fR or \fBlen\fR are zero then this is a request
-to make the \fBsb\fR unbuffered.
-The derived class may use this area or not as it chooses.
-If may accept or ignore the request for unbuffered state as it
-chooses.
-\fBsetbuf\fR should return \fBsb\fR if it honors the request.
-Otherwise it should return 0.
-.TP
-\fBi=sb->sync()\fR
-Is called to give the derived class
-a chance to
-look at the state of the areas, and synchronize
-them with any external representation.
-Normally \fBsync\fR should
-consume any characters that have been storeed into the put area,
-and if possible give back to the source any characters in the get area
-that have not been fetched. When \fBsync\fR returns there should not
-be any unconsumed characters, and the get area should be empty.
-\fBsync\fR should return \fBEOF\fR if some kind of failure occurs.
-.TP
-\fBi=sb->underflow()\fR
-Is called to supply characters for fetching, i.e.,
-to create a condition in which the get area is not empty.
-If it is called when there are characters in the get area
-it should return the first character. If the get area is empty
-it should create a nonempty get area
-and return the next character (which it should also
-leave in the get area).
-If there are no more characters available
-\fBunderflow\fR
-should return \f(CWEOF\fR and leave an empty put area.
-.PP
-The default definitions of the virtual functions:
-.TP
-\fBi=sb->streambuf::doallocate()\fR
-Attempts to allocate a reserve area using \f(CWoperator new\fR.
-.TP
-\fBi=sb->streambuf::overflow(n)\fR
-Is compatible
-with the old stream package, but that behavior is not
-considered part of the specification of the iostream package.
-So \fBstreambuf::overflow\fR should be treated as if
-it had undefined behavior. That is, derived classes should
-always define it.
-.TP
-\fBi=sb->streambuf::pbackfail(n)
-Returns \f(CWEOF\fR.
-.TP
-\fBpos=sb->streambuf::seekpos(pos,mode)\fR
-Returns \fBsb->seekoff(streamoff(pos),seek_beg,mode)\fR.
-Thus to define seeking in a derived class, it is frequently
-only necessary to define
-\fBseekoff\fR and use the inherited \fBstreambuf::seekpos\fR.
-.TP
-\fBpos=sb->streambuf::seekoff(off,dir,mode)\fR
-Returns \f(CWEOF\fR.
-.TP
-\fBsb=sb->streambuf::setbuf(ptr,len)\fR
-Will honor the request when ever there is no reserve area.
-.TP
-\fBi=sb->streambuf::sync()\fR
-Returns 0 if the get area is empty and there are no unconsumed
-characters. Otherwise it returns \f(CWEOF\fR.
-.TP
-\fBi=sb->streambuf::underflow()\fR
-Is compatible
-with the old stream package, but that behavior is not
-considered part of the specification of the iostream package.
-So \fBstreambuf::underflow\fR should be treated as if
-it had undefined behavior. That is, it should always be defined
-in derived classes.
-.SH CAVEATS
-The constructors are public for compatibility with the
-old stream package.
-They ought to be protected.
-.PP
-The interface for unbuffered actions is awkward.
-It's hard to write \fBunderflow\fR and \fBoverflow\fR
-virtuals that behave properly
-for unbuffered \f(CWstreambuf\fRs without special casing.
-Also there is no way for the virtuals to react sensibly to
-multi character gets or puts.
-.PP
-Although the public interface to \f(CWstreambuf\fRs
-deals in characters and bytes,
-the interface to derived classes deals in \f(CWchar\fRs.
-Since a decision had to be made on the types of the real data
-pointers, it seemed easier to reflect that choice in the
-types of the protected members than to duplicate all
-the members with both plain and unsigned char versions.
-But perhaps all these uses of \f(CWchar*\fR ought to have been
-with a typedef.
-.PP
-The implementation contains a variant
-of \fBsetbuf\fR that accepts a third argument.
-It is present only for compatibility
-with the old stream package.
-.SH SEE ALSO
-sbuf.pub(3C++)
-streambuf(3C++)
-iostream(3C++)