00001 #ifndef DV_UTIL_TEESTREAM_H
00002 #define DV_UTIL_TEESTREAM_H
00003
00004
00005 #include <iostream>
00006 #include "filterstreambuf.h"
00007
00008
00009
00010
00011
00012
00013 #include <list>
00014
00015 namespace Dv {
00016 namespace Util {
00017
00018
00019
00020
00021
00022
00023
00024 class teestream: public std::ostream {
00025 private:
00026
00027
00028
00029 class Tee {
00030 public:
00031 Tee(std::ostream& os1, std::ostream& os2);
00032 Tee(const std::list<std::ostream*>& streams);
00033 ~Tee();
00034 int put(int c);
00035 int get() { return EOF; }
00036 int sync();
00037 void close() {}
00038 std::ios::iostate state() const;
00039 private:
00040 std::list<std::ostream*> streams_;
00041 };
00042 public:
00043
00044
00045
00046
00047
00048 teestream(std::ostream& os1, std::ostream& os2);
00049
00050
00051
00052
00053
00054 teestream(const std::list<std::ostream*>& streams);
00055 private:
00056 Tee tee_;
00057 };
00058
00059 }}
00060 #endif