| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- // Filename: multiplexStream.I
- // Created by: drose (27Nov00)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) Carnegie Mellon University. All rights reserved.
- //
- // All use of this software is subject to the terms of the revised BSD
- // license. You should have received a copy of this license along
- // with this source code in a file named "LICENSE."
- //
- ////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::Constructor
- // Access: Public
- // Description:
- ////////////////////////////////////////////////////////////////////
- INLINE MultiplexStream::
- MultiplexStream() : ostream(&_msb) {
- setf(ios::unitbuf);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::add_ostream
- // Access: Public
- // Description: Adds the indicated generic ostream to the multiplex
- // output. The ostream will receive whatever data is
- // sent to the pipe.
- ////////////////////////////////////////////////////////////////////
- INLINE void MultiplexStream::
- add_ostream(ostream *out, bool delete_later) {
- _msb.add_output(MultiplexStreamBuf::BT_none,
- MultiplexStreamBuf::OT_ostream,
- out, NULL, delete_later);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::add_stdio_file
- // Access: Public
- // Description: Adds the given file, previously opened using the C
- // stdio library, to the multiplex output.
- ////////////////////////////////////////////////////////////////////
- INLINE bool MultiplexStream::
- add_stdio_file(FILE *fout, bool close_when_done) {
- _msb.add_output(MultiplexStreamBuf::BT_line,
- MultiplexStreamBuf::OT_ostream,
- NULL, fout, close_when_done);
- return true;
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::add_standard_output
- // Access: Public
- // Description: Adds the standard output channel.
- ////////////////////////////////////////////////////////////////////
- INLINE void MultiplexStream::
- add_standard_output() {
- _msb.add_output(MultiplexStreamBuf::BT_none,
- MultiplexStreamBuf::OT_ostream,
- &cout, NULL, false);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::add_file
- // Access: Public
- // Description: Adds the given file to the multiplex output. The
- // file is opened in append mode with line buffering.
- // Returns false if the file cannot be opened.
- ////////////////////////////////////////////////////////////////////
- INLINE bool MultiplexStream::
- add_file(Filename file) {
- file.set_text();
- pofstream *out = new pofstream;
- if (!file.open_append(*out)) {
- delete out;
- return false;
- }
- out->setf(ios::unitbuf);
- _msb.add_output(MultiplexStreamBuf::BT_line,
- MultiplexStreamBuf::OT_ostream,
- out, NULL, true);
- return true;
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::add_system_debug
- // Access: Public
- // Description: Adds the system debug output the the multiplex
- // output. This may map to a syslog or some such
- // os-specific output system. It may do nothing on a
- // particular system.
- //
- // Presently, this maps only to OutputDebugString() on
- // Windows.
- ////////////////////////////////////////////////////////////////////
- INLINE void MultiplexStream::
- add_system_debug() {
- _msb.add_output(MultiplexStreamBuf::BT_line,
- MultiplexStreamBuf::OT_system_debug);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: MultiplexStream::flush
- // Access: Public
- // Description: Forces out all output that hasn't yet been written.
- ////////////////////////////////////////////////////////////////////
- INLINE void MultiplexStream::
- flush() {
- _msb.flush();
- }
|