diff options
Diffstat (limited to 'private/crt32/iostream/ostream1.cxx')
-rw-r--r-- | private/crt32/iostream/ostream1.cxx | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/private/crt32/iostream/ostream1.cxx b/private/crt32/iostream/ostream1.cxx new file mode 100644 index 000000000..5f486537e --- /dev/null +++ b/private/crt32/iostream/ostream1.cxx @@ -0,0 +1,70 @@ +/*** +* ostream1.cxx - definitions for ostream class non-core member functions +* +* Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved. +* +*Purpose: +* Contains the non-core member function definitions for ostream class. +* +*Revision History: +* 07-01-91 KRS Created. Split out from ostream.cxx for granularity. +* 11-20-91 KRS Make operator= inline. +* 03-30-92 KRS Add multithread locks. +* +*******************************************************************************/ + +#include <cruntime.h> +#include <internal.h> +#include <iostream.h> +#pragma hdrstop + +ostream& ostream::seekp(streampos _strmp) +{ + lockbuf(); + + if (bp->seekpos(_strmp, ios::out)==EOF) + clear(state | failbit); + + unlockbuf(); + return(*this); +} + +ostream& ostream::seekp(streamoff _strmf, seek_dir _sd) +{ + lockbuf(); + + if (bp->seekoff(_strmf, _sd, ios::out)==EOF) + clear(state | failbit); + + unlockbuf(); + return(*this); +} + +streampos ostream::tellp() +{ + streampos retval; + lockbuf(); + + if ((retval=bp->seekoff(streamoff(0), ios::cur, ios::out))==EOF) + clear(state | failbit); + + unlockbuf(); + return(retval); +} + +ostream& ostream::operator<<(streambuf * instm) +{ + int c; + if (opfx()) + { + while ((c=instm->sbumpc())!=EOF) + if (bp->sputc(c) == EOF) + { + state |= failbit; // CONSIDER: is this redundent? + break; + } +// CONSIDER: not very efficient in many cases + osfx(); + } + return *this; +} |