paludis
Version 3.0.2
The one true package mangler
paludis
util
tee_output_stream.hh
1
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3
/*
4
* Copyright (c) 2008, 2009, 2010, 2011 Ciaran McCreesh
5
*
6
* This file is part of the Paludis package manager. Paludis is free software;
7
* you can redistribute it and/or modify it under the terms of the GNU General
8
* Public License version 2, as published by the Free Software Foundation.
9
*
10
* Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
* details.
14
*
15
* You should have received a copy of the GNU General Public License along with
16
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17
* Place, Suite 330, Boston, MA 02111-1307 USA
18
*/
19
20
#ifndef PALUDIS_GUARD_PALUDIS_UTIL_TEE_OUTPUT_STREAM_HH
21
#define PALUDIS_GUARD_PALUDIS_UTIL_TEE_OUTPUT_STREAM_HH 1
22
23
#include <paludis/util/tee_output_stream-fwd.hh>
24
#include <
paludis/util/attributes.hh
>
25
#include <
paludis/util/pimp.hh
>
26
#include <ostream>
27
28
namespace
paludis
29
{
30
class
PALUDIS_VISIBLE
TeeOutputStreamBuf :
31
public
std::streambuf
32
{
33
private
:
34
Pimp<TeeOutputStreamBuf>
_imp;
35
36
protected
:
37
int_type
38
overflow(int_type c)
override
;
39
40
int
sync()
override
;
41
42
std::streamsize
43
xsputn(
const
char
* s, std::streamsize num)
override
;
44
45
public
:
46
TeeOutputStreamBuf();
47
~TeeOutputStreamBuf()
override
;
48
49
void
add_stream(std::ostream *
const
);
50
};
51
52
class
PALUDIS_VISIBLE
TeeOutputStreamBase
53
{
54
protected
:
55
TeeOutputStreamBuf
buf;
56
};
57
58
class
PALUDIS_VISIBLE
TeeOutputStream :
59
protected
TeeOutputStreamBase
,
60
public
std::ostream
61
{
62
public
:
63
///\name Basic operations
64
///\{
65
66
TeeOutputStream();
67
68
///\}
69
70
void
add_stream(std::ostream *
const
);
71
};
72
73
extern
template
class
Pimp<TeeOutputStreamBuf>
;
74
}
75
76
#endif
attributes.hh
paludis::Pimp
Definition
pimp.hh:52
paludis::TeeOutputStreamBase
Definition
tee_output_stream.hh:53
paludis::TeeOutputStreamBuf
Definition
tee_output_stream.hh:32
PALUDIS_VISIBLE
#define PALUDIS_VISIBLE
Definition
attributes.hh:59
paludis
Definition
about_metadata-fwd.hh:24
pimp.hh
Generated by
1.18.0