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